如何在没有此错误的情况下将此 SQL 转储导入 PhpMyAdmin?

Posted

技术标签:

【中文标题】如何在没有此错误的情况下将此 SQL 转储导入 PhpMyAdmin?【英文标题】:How can I get this SQL dump to import into PhpMyAdmin without this error? 【发布时间】:2015-11-13 11:04:23 【问题描述】:

我正在尝试使用 phpMyAdmin 将实时 WordPress 站点中的 SQL 转储导入本地 MAMP 开发环境,以便可以在本地对站点进行编辑。我不断收到此错误:

错误 SQL 查询:INSERT INTO `wp_options` VALUES (259568, '_transient_timeout_geoip_98.80.4.79', '1440122500', 'no');

mysql 说:文档 #1062 - 键 'PRIMARY' 的重复条目 '259568'

我对 SQL 的了解很少。可能是什么原因造成的?我需要做什么才能解决问题,以便成功导入数据库并让网站在本地启动和运行?

【问题讨论】:

【参考方案1】:

您可以将INSERT 语句替换为INSERT IGNORE。这有助于导入条目,即使它们有重复项。

如果你使用类unix操作系统,可以使用sed命令替换insert:

cat dump.sql | sed s/"^INSERT"/"INSERT IGNORE"/g > dump-new.sql

或者您可以为mysqldump 添加选项--insert-ignore 以编写INSERT IGNORE 语句而不是INSERT 语句。

对于通过 phpMyAdmin 导出,可以设置一个选项:

Settings -> Export -> SQL -> Use ignore inserts

【讨论】:

我没有使用终端,只是 phpmyadmin。 mysql 转储来自 WordPress 插件,因为我无权访问服务器端的 phpmyadmin。我通常只使用前端的东西,所以我对数据库和 sql 有点不了解。此命令是否仍适用于 phpmyadmin?不幸的是,在我从星期一开始一周后回去工作之前,我将无法再搞砸它,但这让我把头发拔掉了。 但这必须在实时服务器 PhpMyAdmin 上完成?我目前无法访问它......我可以做些什么来获取我已经必须工作的当前 SQL 转储吗?我可能误会你了…… 我误解了你关于 phpMyAdmin 的问题。所以你通过 phpmyadmin 在本地导入转储,对吗?如果是,请设置选项Settings -> SQL Queries -> Ignore multiple statement errorsSettings -> Import -> CSV -> Do not abort on INSERT error,然后导入转储。 是的,这是正确的,我有一个来自实时网站的 SQL 转储,并正在尝试将其导入本地 PhpMyAdmin。这听起来像我需要的。这导致其他问题的可能性有多大?感谢您的帮助 这确实使导入成功完成,但是我仍然遇到数据库问题。我最终使用了 WordPress 的复制器插件。由于站点太大,我不得不过滤掉 /wp-content 和其他一些文件夹来构建包,然后在恢复站点后将它们添加回来。这并没有解决这个特定的问题,但至少我解决了这个问题。【参考方案2】:

您的表已经有一条主键值为 259568 的记录,并且主键必须是唯一的。删除现有记录将允许您插入此记录,但删除现有记录也可能会导致问题。

【讨论】:

以上是关于如何在没有此错误的情况下将此 SQL 转储导入 PhpMyAdmin?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 usermod 的情况下将用户添加到组?

如何在没有动态 Web 模块 3.0 facet hacks 的情况下将 jdk 9 maven spring boot 2 项目导入 eclipse ee 氧气?

毫秒访问;如何在没有密码的情况下将其移动到不可访问状态/无 DSN 表

导入大 sql 转储时出现 PHPMYADMIN 错误

如何在没有“for xml”子句的情况下将 sql 结果列作为 csv 获取?

如何将 mysql 转储导入 SQL Server 数据库