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

» 2014-09-03 WordPress 28条评论

昨天帮一客户迁移 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

“WordPress: 数据库换前缀导致的问题和解决”有28条评论

  1. W3Cshare says:

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

  2. 秦天SEO says:

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

  3. 放射学 says:

    木木也写了篇

  4. 郑永 says:

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

  5. 林木木 says:

    全文替换大法好!~

    1. zwwooooo says:

      @林木木
      这个要判断一下吧

  6. 郑永 says:

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

    1. zwwooooo says:

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

  7. 毕扬 says:

    什么客户?

    1. zwwooooo says:

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

  8. 小怪物 says:

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

    1. zwwooooo says:

      @小怪物
      你说的是哪里?

    2. 小怪物 says:

      @zwwooooo
      我那天评论的时候你这出现了2次提示数据库连接错误,就是博客空白只有真一据提示,后来没遇到了

      1. zwwooooo says:

        @小怪物
        嗯,服务器问题

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

  10. Ken says:

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

  11. 屠龙 says:

    看似简单,实则不易。

  12. kilobps says:

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

    1. zwwooooo says:

      @kilobps
      这只是举例而已

  13. Pete says:

    这么丧病的需求...

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

    1. zwwooooo says:

      @记忆碎片
      嗯,还是要自己坐下替换判断

  15. kn007 says:

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

    1. zwwooooo says:

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

  16. Andrew says:

    初始时要定好,省得麻烦

    1. zwwooooo says:

      @Andrew
      这个是初始没想到的,很多事情已如此

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

发表评论

昵称 *

网址

B em del U Link Code Quote