导入mysql数据库报错Duplicate entry ’31’ for key ‘PRIMARY’的解决办法

admin
admin
admin
374
文章
102
评论
2021年1月12日10:30:01
评论
1,022

导入mysql数据库报错Duplicate entry ’31’ for key ‘PRIMARY’的解决办法

今天因为折腾品自行博客,从windows换成linux主机,一下子站点打不开了,因为用的主机有自动转移功能,网站文件全部移动到新的主机了,数据库也一样,虽然数据都没有动,但是由于网站环境换了,所以网站打不开出错了,我想着是先在phpmyadmin里面直接将wordpress的所有表导出来,然后重新安装wordpress,结果重新安装后,再在数据库里面重新导入的时候却报错了,提示一下代码:

Duplicate entry '31' for key 'PRIMARY'

这里简单说一下这几个英文单词的意思,Duplicate:重复;entry:进入,key 'PRIMARY':这个在mysql里面就是主键的意思,翻译过来就是主键重复插入的意思。

由于本人对数据库也是个半桶水,弄了半天才弄明白,原来最开始导出的时候是把整个wp的几个数据表全部导出来的,导入的时候重新写入这些表是不能覆盖写入的,大体就是这个意思吧,本人对于mysql没有经过系统的学习,全是在实战中摸索过来的。对于这样的情况,只能是逐个删掉某个表、逐个导入,当然事先最好是备份一下。

像WordPress数据总共只有以下12张表,因为我网站数据不多,主要是日志、网站目录分类、tags这些东西,其他像评论、友情链接、wp的系统设置里面的东西都没有什么数据,wp一些基本设置我们后台简单改一下就好了。

这里简单介绍一下WordPress 所有的数据表都是干什么用的吧,以下是 WordPress 完整的 12 张数据表:

  1. wp_commentmeta:存储 Akismet 或手工审核的评论是否为垃圾评论的判断结果;
  2. wp_comments:存储评论信息,如评论内容、评论所属文章、评论人昵称、邮箱、URL 等;
  3. wp_links:存储友情链接信息,如友链名称、URL、打开方式、描述、是否可见等;
  4. wp_options:存储 WordPress 系统默认及后台系统选项、插件及主题配置信息,包括网站标题、副标题、当前主题等等;
  5. wp_postmeta:存储文章的一些相关信息,如文章附件图片的 alt 信息、文章所在分类的 URL 以及文章自定义的自定义字段,其中可能就有文章访问次数等;
  6. wp_posts:存储文章信息,包括文章标题、正文、摘要、作者、发布时间、访问密码、评论数、修改时间、文章地址等;
  7. wp_termeta:存储对菜单分类的更多设置,属于开发性功能居多,例如分类目录的缩略图、颜色标识等;
  8. wp_terms:存储菜单分类、标签分类名称及 URL 信息;
  9. wp_term_relationships:存储文章和分类、标签的相互对应关系;
  10. wp_term_taxonomy:存储分类和标签的描述信息、父子关系、所属包含的文章数等;
  11. wp_usermeta:存储用户的姓名、昵称、权限等信息;
  12. wp_users:存储用户名、密码、昵称、邮箱、注册时间等信息;

所以,我们只需要逐个导入上面粗体的几张表:wp_postmeta、wp_posts、wp_terms、wp_term_relationships、wp_term_taxonomy,这几张导入即可。导入之前先删除数据库的这几张表,一个个的导入,不要怕麻烦,导入以后看数据是否正常,网站前后台是否正常。经过测试这个办法能够成功解决导入mysql数据库报错Duplicate entry '31' for key 'PRIMARY'的问题。

admin
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: