mysql 错误1050错误1050错误1050

chhkpiq4  于 2022-12-03  发布在  Mysql
关注(0)|答案(9)|浏览(216)

使用以下命令:

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

在MySQL查询浏览器中运行两次该命令将导致:
表ウt1 Ж已经存在。错误1050
我本以为创建“IF NOT EXISTS”表不会抛出错误。我是否遗漏了什么或者这是一个错误?我正在运行版本5.1。谢谢。

zd287kbt

zd287kbt1#

在5.0.27中运行良好
我只得到一个警告(不是错误),指出表存在;

8hhllhi2

8hhllhi22#

如前所述,这是一个警告,而不是一个错误,但是(如果像我一样)你希望事情在没有警告的情况下运行,你可以禁用该警告,然后在完成后重新启用它。

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
6mw9ycah

6mw9ycah3#

可以使用以下查询在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`)

);
7xllpg7q

7xllpg7q4#

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`)
);***
7tofc5zh

7tofc5zh5#

我有一个问题的解决方案,可能也适用于您。我的数据库处于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上运行)

bgibtngc

bgibtngc6#

使用以下参数创建mysql连接。"'raise_on_warnings':False”。它将忽略警告。例如:

config = {'user': 'user','password': 'passwd','host': 'localhost','database': 'db',   'raise_on_warnings': False,}
cnx = mysql.connector.connect(**config)
vbkedwbf

vbkedwbf7#

我在debian上遇到了与@CraigWalker类似的问题:我的数据库处于DROP TABLE失败的状态,因为它找不到表,但CREATE TABLE也失败了,因为MySQL认为表仍然存在。所以损坏的表仍然存在,尽管当我在phpmyadmin中查找时它不在那里。
我通过复制包含一个数据库的整个文件夹来创建此状态,该数据库包含一些MyISAM表和一些InnoDB

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

(this不建议使用!)
所有InnoDB表在phpmyadmin中的新数据库test中都不可见。
sudo mysqladmin flush-tables也没有帮助。

**我的解决方案:**我不得不删除带有drop database test的新测试数据库,并使用mysqldump复制它:

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

jljoyd4f8#

好吧,有很多答案已经提供和很多是有意义的。
有些人提到它只是警告,有些人给出了一个临时的方法来禁用警告。所有这些都可以工作,但***当数据库中的事务数量很高时会增加风险***。
我今天遇到了类似的情况,这是我提出的问题...

declare
begin
  execute immediate '
    create table "TBL" ("ID" number not null)';
  exception when others then
    if SQLCODE = -955 then null; else raise; end if;
end;
/

这很简单,如果在运行查询时出现异常,它将被抑制,您可以对SQLOracle使用相同方法

mum43rcc

mum43rcc9#

如果有人在导出Phpmyadmin后遇到此错误,请使用自定义选项并添加“drop tables”语句来清除此错误。

相关问题