93

次のコマンドを使用します。

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を実行しています。ありがとう。

4

9 に答える 9

68

5.0.27でうまく動作します

テーブルが存在するという警告 (エラーではありません) が表示されます。

于 2009-10-30T16:47:21.230 に答える
34

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

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
于 2010-08-08T12:33:22.873 に答える
12

次のクエリを使用して、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`)

);
于 2015-12-18T07:40:17.267 に答える
3

あなたにも当てはまるかもしれない問題の解決策があります。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 で実行)

于 2010-11-23T00:05:05.043 に答える
0

次のパラメータで mysql 接続を作成します。"'raise_on_warnings': False". 警告は無視されます。例えば

config = {'user': 'user','password': 'passwd','host': 'localhost','database': 'db',   'raise_on_warnings': False,}
cnx = mysql.connector.connect(**config)
于 2014-02-08T10:25:12.720 に答える