首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >1068 mysql中定义的多个主键

问1068 mysql中定义的多个主键
EN

Stack Overflow用户
提问于 2015-02-05 12:20:27
回答 3查看 26.2K关注 0票数 4

我导出(与更新)我现有的我的SQL备份,并通过PHPAdmin导入到另一台PC,但它给出了以下错误信息。我只需要替换备份PC上的现有数据库。有可能做到这一点吗?

"#1068 -定义了多个主键“

谢谢,Mohan K

EN

回答 3

Stack Overflow用户

发布于 2015-02-05 12:26:20

可以,在导出中添加drop table选项,然后在导入时,您的表将被删除并重新创建。这样可以避免主键冲突。

票数 4
EN

Stack Overflow用户

发布于 2015-02-05 12:43:00

要对现有数据库进行大规模替换...

一种选择是删除现有数据库并重新创建它。但要确保您确实想要这样做,并且是在您真正想要在其上执行的MySQL实例上执行:

代码语言:javascript
复制
DROP DATABASE mydb ;
CREATE DATABASE mydb ; 

请注意,这可能会影响授予的权限,您可能需要重新授予新数据库的权限。(在CREATE DATABASE语句中,包括默认字符集和排序规则的规范(如果它们与实例变量的设置不同)。)

SQLyog有一个方便的“空数据库”菜单选项,它可以删除数据库中的所有对象,而不必删除数据库并重新创建它。(这可能会影响授予各个数据库对象的权限。)

我不确定phpmyadmin是否有相同的功能。要执行自己的操作,只需查询information_schema表,以标识所有表、视图、过程等。

例如,要生成DROP TABLE语句的列表,可以运行如下查询:

代码语言:javascript
复制
 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等。

票数 0
EN

Stack Overflow用户

发布于 2015-10-21 02:35:51

不是删除数据库,而是清空它:

代码语言:javascript
复制
truncate tablename

(然后再次添加主键)这样做时,不必再次重新创建所有的表和列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28336162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档