如何在没有此错误的情况下将此 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 errors
,Settings -> Import -> CSV -> Do not abort on INSERT error
,然后导入转储。
是的,这是正确的,我有一个来自实时网站的 SQL 转储,并正在尝试将其导入本地 PhpMyAdmin。这听起来像我需要的。这导致其他问题的可能性有多大?感谢您的帮助
这确实使导入成功完成,但是我仍然遇到数据库问题。我最终使用了 WordPress 的复制器插件。由于站点太大,我不得不过滤掉 /wp-content 和其他一些文件夹来构建包,然后在恢复站点后将它们添加回来。这并没有解决这个特定的问题,但至少我解决了这个问题。【参考方案2】:
您的表已经有一条主键值为 259568 的记录,并且主键必须是唯一的。删除现有记录将允许您插入此记录,但删除现有记录也可能会导致问题。
【讨论】:
以上是关于如何在没有此错误的情况下将此 SQL 转储导入 PhpMyAdmin?的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有动态 Web 模块 3.0 facet hacks 的情况下将 jdk 9 maven spring boot 2 项目导入 eclipse ee 氧气?
毫秒访问;如何在没有密码的情况下将其移动到不可访问状态/无 DSN 表