web-dev-qa-db-ja.com

MySQL「CREATE TABLE IF NOT EXISTS」->エラー1050

コマンドの使用:

CREATE TABLE IF NOT EXISTS `test`.`t1` (
    `col` VARCHAR(16) NOT NULL
) ENGINE=MEMORY;

MySQL Query Browserでこれを2回実行すると、次の結果になります。

テーブル 't1'は既に存在しますエラー1050

テーブル「IF NOT EXISTS」を作成してもエラーは発生しないと思っていたでしょう。私は何かを見逃していますか、これはバグですか?バージョン5.1を実行しています。ありがとう。

55
user199559

5.0.27で正常に動作します

テーブルが存在するという警告(エラーではなく)が表示されるだけです。

45
Eli

既に述べたように、これはエラーではなく警告ですが、(私のように)警告なしで実行したい場合は、その警告を無効にし、完了したら再び有効にすることができます。

SET sql_notes = 0;      -- Temporarily disable the "Table already exists" warning
CREATE TABLE IF NOT EXISTS ...
SET sql_notes = 1;      -- And then re-enable the warning again
24
gdt

次のクエリを使用して、MySqlの特定のデータベースへのテーブルを作成できます。

create database if not exists `test`;

USE `test`;

SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;

/*Table structure for table `test` */

CREATE TABLE IF NOT EXISTS `tblsample` (

  `id` int(11) NOT NULL auto_increment,   
  `recid` int(11) NOT NULL default '0',       
  `cvfilename` varchar(250)  NOT NULL default '',     
  `cvpagenumber`  int(11) NULL,     
  `cilineno` int(11)  NULL,    
  `batchname`  varchar(100) NOT NULL default '',
  `type` varchar(20) NOT NULL default '',    
  `data` varchar(100) NOT NULL default '',
   PRIMARY KEY  (`id`)

);
7
Sachin Parse

あなたにも当てはまるかもしれない問題の解決策があります。私のデータベースは、DROP TABLEはテーブルが見つからなかったため失敗しました... CREATE TABLEは、MySQLがテーブルが存在すると判断したために失敗しました。 (この状態は、IF NOT EXISTS句を簡単に混乱させる可能性があります)。

私は最終的に見つけました このソリューション

Sudo mysqladmin flush-tables

私にとっては、Sudoなしで、次のエラーが発生しました。

mysqladmin: refresh failed; error: 'Access denied; you need the RELOAD privilege for this operation'

(OS X 10.6で実行)

3
Craig Walker
create database if not exists `test`;

USE `test`;

SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;

/*Table structure for table `test` */

***CREATE TABLE IF NOT EXISTS `tblsample` (
  `id` int(11) NOT NULL auto_increment,   
  `recid` int(11) NOT NULL default '0',       
  `cvfilename` varchar(250)  NOT NULL default '',     
  `cvpagenumber`  int(11) NULL,     
  `cilineno` int(11)  NULL,    
  `batchname`  varchar(100) NOT NULL default '',
  `type` varchar(20) NOT NULL default '',    
  `data` varchar(100) NOT NULL default '',
   PRIMARY KEY  (`id`)
);***
3
Balkishan

Phpmyadminエクスポート後にこのエラーが発生した場合、カスタムオプションを使用して「ドロップテーブル」ステートメントを追加すると、このエラーが解消されます。

0
nizz0k

Debianの@CraigWalkerと同様の問題がありました。データベースが、テーブルを見つけることができなかったためDROP TABLEが失敗した状態でしたが、MySQLはテーブルがまだ存在すると考えたためCREATE TABLEも失敗しました。そのため、phpmyadminを調べたときに存在しなかったにもかかわらず、壊れたテーブルはまだどこかに存在していました。

いくつかのMyISAMおよびいくつかのInnoDBテーブルを持つデータベースを含むフォルダー全体をコピーするだけで、この状態を作成しました。

cp -a /var/lib/mysql/sometable /var/lib/mysql/test

(これは推奨されません!)

Phpmyadminの新しいデータベースtestに表示されないすべてのInnoDBテーブル。

Sudo mysqladmin flush-tablesも助けにはなりませんでした。

私の解決策:drop database testを使用して新しいテストデータベースを削除し、代わりにmysqldumpを使用してコピーする必要がありました。

mysqldump somedatabase -u username -p -r export.sql
mysql test -u username -p < export.sql
0
rubo77