Blog

WordPress: 数据库换前缀导致的问题和解决

昨天帮一客户迁移 WordPress,本来是很简单的事,但客户新服务器本身运行一个 WordPress,而且数据库只有一个,那么这个迁移过来的 WordPress 用的数据库表需要改『前缀』。

用 WordPress 的朋友都知道 WordPress 默认的数据表前缀是『wp_』:(注:这是默认的数据表,如果安装了其他插件有可能生成其他 wp_ 开头的数据表)

wp_commentmeta
wp_comments
wp_links
wp_options
wp_postmeta
wp_posts
wp_terms
wp_term_relationships
wp_term_taxonomy
wp_usermeta
wp_users

第一步:那么第一件事就是把所以表前缀改为其他名,如改为 ooxx_(推荐用 phpmyadmin 或者 Adminer 修改)

ooxx_commentmeta
ooxx_comments
ooxx_links
ooxx_options
ooxx_postmeta
ooxx_posts
ooxx_terms
ooxx_term_relationships
ooxx_term_taxonomy
ooxx_usermeta
ooxx_users

第二步:修改 wp-config.php

找到 $table_prefix = 'wp_'; 改为 $table_prefix = 'ooxx_';

这样就行了?本来以为是,因为访问博客一切正常,不过当你登录后台时,即使你是 Administrator 身份等待你的是下面这一行字:

You do not have sufficient permissions to access this page.

囧,看来还有第三步……

第三步:修改表里面 wp_ 开头的字段

1. ooxx_options:里面有个 wp_user_roles 改为 ooxx_user_roles

2. ooxx_usermeta:把里面的 wp_capabilities, wp_user_level, wp_user-settings, wp_user-settings-time, and wp_dashboard_quick_press_last_post_id 字段名的 wp_ 全部改为 ooxx_

3. 另外确保 ooxx_usermeta 表里面的 ooxx_capabilities 和 ooxx_user_level 的值如下
ooxx_capabilities should be a:1:{s:13:"administrator";s:1:"1";}
ooxx_user_level should be 10

总结:

折腾后得出简单的方法适合数据库不大的情况下:导出原来的数据库(不压缩 SQL 格式),用文本编辑器打开此导出文件,搜索替换『wp_』为『新前缀_』,导入新服务器数据库。(当然,为了准确性,不能简单地“全部替换”,最好一个一个搜索替换,免得出错)

zww
or
oooo

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: https://zww.me/wordpress-database-change-the-prefix-cause-problems-and-solutions.z-turn

28 comments

  1. W3Cshare W3Cshare Google Chrome 32 Google Chrome 32 Windows 8.1 Windows 8.1

    最后总结的方法不错 :mrgreen:

    沙发
  2. 秦天SEO 秦天SEO Google Chrome 37 Google Chrome 37 Windows 8.1 Windows 8.1

    总结的方法一直在用,神技啊!

    板凳
  3. maillot saxo bank maillot saxo bank Google Chrome 30 Google Chrome 30 Windows 7 Windows 7

    学习了

    地板
  4. 放射学 放射学 Firefox 25 Firefox 25 Windows 7 Windows 7

    木木也写了篇

    4楼
  5. 郑永 郑永 Firefox 31 Firefox 31 Windows XP Windows XP

    这个是一个经验,先收藏哈,以后用得着。

    5楼
  6. 林木木 林木木 Google Chrome 37 Google Chrome 37 Mac OS X 10.10 Mac OS X 10.10

    全文替换大法好!~

    6楼
  7. 郑永 郑永 Google Chrome 37 Google Chrome 37 Windows XP Windows XP

    最后总结那个比较简单,但是wp替换的地方多么?呵呵

    7楼
    • zwwooooo zwwooooo Firefox 32 Firefox 32 Windows 8.1 Windows 8.1

      @郑永
      要自己判断一下,不然也会替换错,毕竟只是 wp_ 开头

  8. 毕扬 毕扬 Google Chrome 37 Google Chrome 37 Mac OS X 10.9 Mac OS X 10.9

    什么客户?

    8楼
    • zwwooooo zwwooooo Firefox 32 Firefox 32 Windows 8.1 Windows 8.1

      @毕扬
      找我做事然后会付款给我的就是客户,不管是国内还是国外

  9. 小怪物 小怪物 Google Chrome 36 Google Chrome 36 Windows 7 Windows 7

    经常出来数据库连接错误?

    9楼
  10. pptv官方下载 pptv官方下载 Google Chrome 35 Google Chrome 35 Windows 7 Windows 7

    :evil: 文章不错 收藏了以备不时之需

    10楼
  11. Ken Ken Google Chrome 36 Google Chrome 36 Windows 8.1 Windows 8.1

    学习了,如果有遇到这种情况就不怕了。

    11楼
  12. 屠龙 屠龙 Google Chrome 36 Google Chrome 36 Windows XP Windows XP

    看似简单,实则不易。

    12楼
  13. 1kilobps kilobps Google Chrome 21 Google Chrome 21 Windows 7 Windows 7

    你这个表前缀,让你的客户情何以堪--|||

    13楼
  14. Pete Pete Google Chrome 37 Google Chrome 37 Windows 8.1 Windows 8.1

    这么丧病的需求...

    14楼
  15. 记忆碎片 记忆碎片 Google Chrome 36 Google Chrome 36 Windows 8.1 Windows 8.1

    我也换过 少了第三部 登陆后会提示没权限
    最后一种方法也试过 换了之后直接挂了 很多wp_不只是影响到前缀

    15楼
  16. kn007 kn007 Google Chrome 36 Google Chrome 36 Windows XP Windows XP

    直接在phpmyadmin可以利用sql来改...免去下载本地麻烦,而且可以用在大数据库,最好锁表

    16楼
    • zwwooooo zwwooooo Firefox 32 Firefox 32 Windows 8.1 Windows 8.1

      @kn007
      这里说的是换服务器,而且要同一个数据库。修改一般是 phpmyadmin 方便

  17. Andrew Andrew Google Chrome 26 Google Chrome 26 Windows 7 Windows 7

    初始时要定好,省得麻烦

    17楼
  18. 张戈博客 张戈博客 Google Chrome 30 Google Chrome 30 Windows 7 Windows 7

    update `new_usermeta` set `meta_key`= replace(`meta_key`,'old_','new_') WHERE `meta_key` like "%old_%";
    我也遇到过,sql替换下就好了,old前缀,new前缀。。。

    18楼

Leave a Reply