Phpmyadmin出口问题

时间:2015-05-15 10:10:29

标签: php mysql phpmyadmin

我的共享主机不允许SSH访问。我正在尝试使用phpmyadmin导出数据库并导入到新服务器上。我一直收到这个错误,我不知道如何解决它。任何帮助表示赞赏。

Error
SQL query:
--
-- Indexes for dumped tables
--
--
-- Indexes for table `EWRporta_blocks`
--
ALTER TABLE  `EWRporta_blocks` ADD PRIMARY KEY (  `block_id` ) ,
ADD KEY  `title` (  `title` ) ;
MySQL said: Documentation
#1068 - Multiple primary key defined 

3 个答案:

答案 0 :(得分:1)

我多次遇到过这个问题,而modonoghue有一种有效的方法可以通过删除表并完全重新创建它们来处理它。

问题&一般解决方案

基本上发生的事情是您正在尝试运行INSERT语句,这些语句将值插入已存在的主键中 - 从而为您提供重复键的错误。数据库不知道如何处理具有相同键的多个条目,因为SQL逻辑基于每个行'拥有一个完全独特的主键。

想要做的是将所有值保存到导出的sql文件中,在查询中,当您再次导入文件时,删除所有现有文件值(假设您要将其恢复到某个点并且不担心在导出日期和导入日期之间保存的数据!)并且插入所有导出的值...或者不知何故否则会避免尝试使用现有密钥添加新条目(请参阅下文)。

导出特定数据库的一种方法(TRUNCATE):

  1. 换句话说,当您使用PHPMYADMIN导出sql文件时,请单击"自定义 - 显示所有可能的选项"。
  2. "格式特定选项" 确保"结构和数据"被选中(否则你可能最终丢弃你的表而没有数据来恢复它们!!!)
  3. "数据创建选项" select"在插入"之前截断表 - 这将删除表格中的所有现有数据。
  4. 导入时,将从每个表中删除所有现有数据(TRUNCATE),并将所有导出的数据写回表(INSERT),但表本身不会被删除(DROP)。

    IGNORE与TRUNCATE(替代路线)

    您应该可以跳过上面的步骤3(TRUNCATE),而是选中复选框"而不是INSERT语句使用......" " INSERT IGNORE语句"

    基本上," IGNORE"只会跳过导出数据中的重复项,并阻止您删除现有数据。如果您只想添加丢失的数据,而不删除自上次导出以来已更改/添加的数据,这是很好的。

    超级用户(ON DUPLICATE KEY UPDATE)

    还有一个INSERT INTO ... ON DUPLICATE KEY UPDATE ...允许你告诉查询如果有重复的密钥该怎么做。这可以防止您忽略具有相同键的两个条目,这两个条目可能不是相同的条目。但是,正确设置会更复杂。

答案 1 :(得分:0)

正如其他人所说,放弃并重新创建表格。在phpmyadmin中,选中标有&#34的复选框;添加DROP TABLE"在做出口时。然后应该在导入时解决所描述的问题。

答案 2 :(得分:0)

删除评论由导出工具生成

--
-- Indexes for dumped tables
--
--
-- Indexes for table `EWRporta_blocks`
--

并尝试执行查询,仅供参考

ALTER TABLE EWRporta_blocks添加PRIMARY KEY(block_id), 添加密钥titletitle);

相关问题