今天因为折腾品自行博客,从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 张数据表:
- wp_commentmeta:存储 Akismet 或手工审核的评论是否为垃圾评论的判断结果;
- wp_comments:存储评论信息,如评论内容、评论所属文章、评论人昵称、邮箱、URL 等;
- wp_links:存储友情链接信息,如友链名称、URL、打开方式、描述、是否可见等;
- wp_options:存储 WordPress 系统默认及后台系统选项、插件及主题配置信息,包括网站标题、副标题、当前主题等等;
- wp_postmeta:存储文章的一些相关信息,如文章附件图片的 alt 信息、文章所在分类的 URL 以及文章自定义的自定义字段,其中可能就有文章访问次数等;
- wp_posts:存储文章信息,包括文章标题、正文、摘要、作者、发布时间、访问密码、评论数、修改时间、文章地址等;
- wp_termeta:存储对菜单分类的更多设置,属于开发性功能居多,例如分类目录的缩略图、颜色标识等;
- wp_terms:存储菜单分类、标签分类名称及 URL 信息;
- wp_term_relationships:存储文章和分类、标签的相互对应关系;
- wp_term_taxonomy:存储分类和标签的描述信息、父子关系、所属包含的文章数等;
- wp_usermeta:存储用户的姓名、昵称、权限等信息;
- wp_users:存储用户名、密码、昵称、邮箱、注册时间等信息;
所以,我们只需要逐个导入上面粗体的几张表:wp_postmeta、wp_posts、wp_terms、wp_term_relationships、wp_term_taxonomy,这几张导入即可。导入之前先删除数据库的这几张表,一个个的导入,不要怕麻烦,导入以后看数据是否正常,网站前后台是否正常。经过测试这个办法能够成功解决导入mysql数据库报错Duplicate entry '31' for key 'PRIMARY'的问题。
评论