假设有数据库 shop
,原本表前缀为sp_
,现在要全部改成shop_
。第一时间想到的办法是批量替换数据库导出 .sql
中的 sp_
至 shop_
,但是这种方法并不安全,一旦数据库中有其他的 sp_ 字样也会被一同替换的。下面介绍两种 MySQL 批量修改表前缀的方法,最方便还是方法2。
一、方法1:采用命令的方式批量修改 MySQL 表前缀
- 生成替换命令
- 批量替换
SELECT CONCAT( 'ALTER TABLE ', table_name, ' RENAME TO shop_', substring(table_name, 4),';') FROM information_schema.tables where table_schema='shop' and table_name LIKE 'sp_%';
- 4:表示从
sp_
后面字符开始,这个数值要根据要替换的前缀长度改变,substring 函数是从 1 开始的; table_schema
:指定数据库名称;
上面的命令执行完成后,会生成替换表名的命令,如:
ALTER TABLE sp_users RENAME TO shop_users; ALTER TABLE sp_orders RENAME TO shop_orders; ALTER TABLE sp_comments RENAME TO shop_comments;
批量执行上面的语句,就完成了批量修改表前缀。
二、方法2:通过 phpMyAdmin 批量修改 MySQL 表前缀
- 选中要修改表前缀的数据库
- 点击“结构”标签
- 勾选下方的“全选”
- 在“选中项”下拉菜单中选择“修改表前缀”
- 填写当前的表前缀以及要修改为的表前缀
- 点击提交即可。
三、WordPress需要再修改:
1、在网站根目录修改wp_config.php里面的$table_prefix为新表前缀
$table_prefix = ‘sp_’;
更改为:
$table_prefix = ‘shop_’;
2、更改sp_options表:
表sp_options( 新表为shop_options)里面的option_name字段值要改掉
update sp_options set option_name = replace(option_name,’sp_’,’shop_’);
3、更改sp_usermeta表
表sp_usermeta( 新表为shop_usermeta)里面的meta_key字段值要改掉
update sp_usermeta set meta_key = replace(meta_key,’sp_’,’shop_’);