修改WordPress数据库的表前缀

宇托 12 1 条

在Wordpress的实际应用中,有时候为了在一个数据库里安装多个Wordpress,就需要修改默认的表前缀。当然修改前缀的机会不多,但也有。
其修改步骤如下:

1.修改表名

把Wordpress数据库中以旧前缀开头的表全部改成新前缀开头的表名。
我们可以用MySQL的SQL语句: <span class="lang:mysql decode:true crayon-inline " >RENAME TABLE tbl_name TO new_tbl_name;</span> 来修改表名。
你也可以用附录中的工具来自动生成SQL语句再执行。

2.修改wp-config.php文件

在wp-config.php文件中,找到下面这一行(XXX表示你的旧前缀)。

$table_prefix  = 'XXX';

把其修改为你的新前缀(YYY表示你的旧前缀)

$table_prefix  = 'YYY';

3. 更新MySQL数据库

这一步不执行的话,在登陆之后会显示“您没有足够的权限访问这个页面。”的错误提示。
这一步的主要操作是把options表和usermeta表里的旧前缀全部改成新前缀。
执行用SQL如下,在执行前,请把{old}替换成你的旧前缀,把{new}替换成你的新前缀。

UPDATE {new}options SET option_name = REPLACE(option_name,'{old}user_roles','{new}user_roles');
UPDATE {new}usermeta SET meta_key = REPLACE(meta_key,'{old}','{new}');

当然你也可以用附录中的工具来自动生成SQL语句再执行。

附录. 更新用SQL自动生成工具

 

<div class="row-fluid">

<div class="span2">不带前缀所有表:</div>
<div class="span10"><input id="allTbl_5ca41d411208eb9a" type="text" class="span12" value="commentmeta;comments;links;options;postmeta;posts;terms;term_relationships;term_taxonomy;usermeta;users" /></div>

</div>
<div class="row-fluid">

<div class="span2">旧表前缀:</div>
<div class="span10"><input id="oldPre_5ca41d411208eb9a" type="text" value="wp_" /></div>

</div>
<div class="row-fluid">

<div class="span2">新表前缀:</div>
<div class="span10"><input id="newPre_5ca41d411208eb9a" type="text" value="yutuo_" /></div>

</div>
<div class="row-fluid">

<div class="span2">表名更新用SQL:<br/>(自动生成)</div>
<div class="span10"><textarea id="sqlChgTbl_5ca41d411208eb9a" class="span12" style="height:235px"></textarea></div>

</div>
<div class="row-fluid">
<div class="span2">执行用SQL:<br/>(自动生成)</div>

<div class="span10"><textarea id="sqlUpdate_5ca41d411208eb9a" class="span12"></textarea></div>

</div>

<script type='text/javascript'>
var setValue_5ca41d411208eb9a = function() {

var $ = jQuery;
var chgTblFormat = "RENAME TABLE {old_table} TO {new_table};";
var updFormat = "UPDATE {new}options SET option_name = REPLACE(option_name, '{old}user_roles', '{new}user_roles');\nUPDATE {new}usermeta SET meta_key = REPLACE(meta_key, '{old}', '{new}');";
var oldPre = $('#oldPre_5ca41d411208eb9a').val();
var newPre = $('#newPre_5ca41d411208eb9a').val();
var chgResult = '';
var tableNms = $('#allTbl_5ca41d411208eb9a').val().split(';');
for (var i = 0; i < tableNms.length; i++) {
    var oldTblNm = oldPre + tableNms[i];
    var newTblNm = newPre + tableNms[i];
    chgResult += i === 0 ? '' : '\n';
    chgResult += chgTblFormat.replace(/\{old_table\}/g, oldTblNm).replace(/\{new_table\}/g, newTblNm);
}
$('#sqlChgTbl_5ca41d411208eb9a').val(chgResult);
var updResult = updFormat.replace(/\{old\}/g, oldPre).replace(/\{new\}/g, newPre);
$('#sqlUpdate_5ca41d411208eb9a').val(updResult);

};
jQuery(function() {

var $ = jQuery;
setValue_5ca41d411208eb9a();
$("#oldPre_5ca41d411208eb9a").on('keyup paste input', setValue_5ca41d411208eb9a);
$("#newPre_5ca41d411208eb9a").on('keyup paste input', setValue_5ca41d411208eb9a);

});
</script>

发表我的评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论(1)

  1. 都不知道我该写什么啊