使用命令:
CREATE TABLE IF NOT EXISTS `test`.`t1` (
`col` VARCHAR(16) NOT NULL
) ENGINE=MEMORY;
在MySQL查询浏览器运行结果这两次:
表“T1”已经存在错误1050
我本来以为在创建表“IF NOT EXISTS”不会引发错误。 我缺少的东西,或这是一个错误? 我正在运行5.1版。 谢谢。
使用命令:
CREATE TABLE IF NOT EXISTS `test`.`t1` (
`col` VARCHAR(16) NOT NULL
) ENGINE=MEMORY;
在MySQL查询浏览器运行结果这两次:
表“T1”已经存在错误1050
我本来以为在创建表“IF NOT EXISTS”不会引发错误。 我缺少的东西,或这是一个错误? 我正在运行5.1版。 谢谢。
工作正常,我在5.0.27
我刚刚得到一个警告(不是错误),该表的存在;
如前所述,这是一个警告不是错误,但(如果像我一样),你想要的东西,而不会警告运行,你可以禁用警告,那么当你完成重新启用它。
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
您可以使用下面的查询创建一个表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`)
);
我有一个解决方案,也可能适用于您的问题。 我的数据库是在一个状态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运行)
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`)
);***
我有一个类似的问题,因为@CraigWalker在Debian:我的数据库是在一个状态DROP TABLE
失败,因为它找不到表,但CREATE TABLE
也未能因为MySQL认为该表仍然存在。 所以破表仍然存在的地方,虽然它不存在,当我在phpMyAdmin看去。
我只是通过复制包含数据库的一些整个文件夹中创建这种状态下MyISAM
和一些InnoDB
表
cp -a /var/lib/mysql/sometable /var/lib/mysql/test
(这是不推荐!)
所有InnoDB表,其中在新的数据库中不可见test
在phpMyAdmin。
sudo mysqladmin flush-tables
没有帮助。
我的解决办法:我不得不删除与新的测试数据库drop database test
,并复制它mysqldump
来代替:
mysqldump somedatabase -u username -p -r export.sql
mysql test -u username -p < export.sql
如果有人是phpMyAdmin的出口后,收到此错误,使用自定义选项,并增加了“降表”清除这个权利了声明。
创建具有以下参数MySQL连接。 “ 'raise_on_warnings':假”。 它将忽略警告。 例如
config = {'user': 'user','password': 'passwd','host': 'localhost','database': 'db', 'raise_on_warnings': False,}
cnx = mysql.connector.connect(**config)