昨晚,MOREOPEN 博友重装 WordPress 后发现没有任何内容,帮忙解决时,发现他的数据库居然有 3 种前缀,看来是多次安装的时没填的前缀不一致造成的。
于是,玛思阁着手帮他整理数据库:
点击查看大小,找到有数据的的表前缀,发现前缀居然是数据库名,很长很长。。。太难看了!这对于我这种强迫症患者是无法容忍的。。。我先将其他 2 个前缀的所有空表全部删除,只留下那个前缀很长的表,然后全选使用下方的修改表前缀功能,全部给改了。
重新安装 WP 后,发现原来的那个用户名登陆不了了,提示权限不足,度了一把,找到了解决办法,这就来记录下!
网上找到的方法如下(玛思阁稍作整理):
默认的表前缀为 wp_,如果你修改了 wp_config.php 中的表前缀,也就是$table_prefix=后面的内容,则您需要同步修改数据库中的表前缀,修改完成后,如果登录 wordpress 后台成功后,会返回“您没有足够的权限访问这个页面。”的提示,那也就是说您还没有完成修改,Wordpress 的代码设计严密,没有那么简单让你完成。
解决办法:打开 *_options表,找到optionname字段值为*_user_roles的栏位,改为与你修改后的前缀(*表示实际前缀)。
然后打开 *_usermeta 表,将meta-key字段中有旧前缀的值,更为新的前缀就 OK。
不知道为啥,发现在他的这个表搜索后,发现有好几千条数据!看来手动是行不通了,只好使用 SQL 语句进行局部替换了,SQL 语句如下,在 phpMyAdmin 中选定数据库后,点击工具条中的 SQL 执行如下语句:
1
|
update `new_usermeta` set `meta_key`= replace(`meta_key`,'old_','new_') WHERE `meta_key` like "%old_%";
|
以上仅为示例,实际得根据新旧表前缀进行修改:
其中,new_ 表示修改后的新的前缀,old 是修改前的前缀,按照实际修改后,执行即可!
实际以上 SQL 代码也就是 MySql 的部分替换语句,不会的一起来学习下:
比如,将 the_table 表 the_subject 字段中的 Welcom to 替换成 欢迎光临:
1
|
update `the_table` set `the_subject` = replace(`the_subject`, 'Welcome to', '欢迎光临') where instr(`the_subject`,'Welcome to') > 0
|