在尝试导入SQL文件时出现“Table already exists”错误。
在尝试导入SQL文件时出现“Table already exists”错误。
我正在尝试通过phpMyAdmin上传一个备份的sql文件。
在phpMyAdmin中使用与导入文件中相同的数据库名称创建一个空的数据库,然后使用该空数据库中的导入功能。
我收到以下错误信息。
#1050 - 表'`db`.`t`'已经存在
在导入文件中,每个CREATE TABLE
语句都带有IF NOT EXISTS
后缀,为什么会报错呢?
-- -- 数据库:`mbfour` -- -- -------------------------------------------------------- -- -- 表结构:`cars` -- CREATE TABLE IF NOT EXISTS `cars` ( `car_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, `type` varchar(200) NOT NULL, `status` varchar(20) NOT NULL, `capacity` varchar(5) NOT NULL, PRIMARY KEY (`car_id`), ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; -- -- 车辆表的数据 -- INSERT INTO `cars` (`car_id`, `type`, `status`, `capacity`) VALUES (1, 'automatic', 'built', '4L'), (2, 'automatic', 'in-production', '2L'), (3, 'automatic', 'built', '2L'), (4, 'automatic', 'in-production', '4L'); .... ....
是否有什么魔法发生了?
尝试两次后,我以相同的方式进行导入,它可以工作了。
谢谢大家。
当尝试导入SQL文件时出现"Table already exists"错误的问题,可能的原因是SQL文件中包含了创建数据库的查询语句,而数据库已经存在。
解决方法是在SQL文件中注释或删除创建数据库的查询语句。
以下是一种解决方法的示例代码:
/* CREATE TABLE IF NOT EXISTS `cars` ( `car_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, `type` varchar(200) NOT NULL, `status` varchar(20) NOT NULL, `capacity` varchar(5) NOT NULL, PRIMARY KEY (`car_id`), ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;*/
通过将该查询语句注释掉或删除,再次尝试导入SQL文件,应该就可以成功执行了。