我导出(使用Update)我现有的My SQL备份并通过PHPAdmin将其导入另一台PC,但它给出了以下错误消息。我需要替换备份PC上的现有数据库。有可能这样做吗?
"#1068 - 定义了多个主键"
谢谢, Mohan K
答案 0 :(得分:3)
是的,在导出中添加drop table
选项,然后在导入时,您的表将被删除并重新创建。这样可以避免pk冲突。
答案 1 :(得分:0)
批量更换现有数据库...
一种选择是删除现有数据库并重新创建它。但是请确保你真的想要这样做,并且你在MySQL实例上这样做你真的想要这样做:
DROP DATABASE mydb ;
CREATE DATABASE mydb ;
请注意,这可能会对授予的权限产生影响,您可能需要重新授予新数据库的权限。 (在CREATE DATABASE语句中,包括默认字符集和排序规则的规范,如果它们与实例变量的设置不同。)
SQLyog有一个方便的#34;空数据库" menu选项,它删除数据库中的所有对象,而不必删除数据库并重新创建它。 (这可能会对授予单个数据库对象的权限产生影响。)
我不确定phpmyadmin是否具有等效功能。要自己动手,需要查询information_schema
表以识别所有表格,视图,程序等。
例如,要生成DROP TABLE
语句的列表,您可以运行如下的查询:
SELECT CONCAT('DROP TABLE `',t.table_schema,'`.`',t.table_name,'` ;') AS stmt
FROM information_schema.tables t
WHERE t.table_schema = 'foo' ;
如果表有外键,您可以为会话设置FOREIGN_KEY_CHECKS=0
,或者以适当的顺序执行drop语句等。然后重复其他对象类型:information_schema.routines
,等
答案 2 :(得分:0)
而不是drop database,而是将其清空:
truncate tablename
(然后再次添加pk) 当您这样做时,不必再次重新创建所有表和列。