如何在WampServer上重新初始化MySQL以允许表名小写= 2

xcitsw88  于 2023-02-28  发布在  Mysql
关注(0)|答案(1)|浏览(134)

我使用Duplicator Pro将我的实时网站移动到Windows 11 Pro桌面上的WampServer虚拟主机上。除了PHP_Error. log文件中的两个重复出现的错误外,一切正常:
[2023年2月19日16:15:21世界标准时间] WordPress数据库错误查询表'前缀e事件'已经存在创建表前缀e事件...
以及
[2023年2月19日16:15:21世界标准时间] WordPress数据库错误查询的键值名'create_at_index'重复ALTER TABLE _PREFIX_e_events添加INDEX create_at_index(创建的时间)...
注意,我将真实的的前缀改为“prefix”。
我知道这个错误是由命令中的混合大小写前缀/前缀引起的。我在my.ini文件中添加了“lower_case_table_names = 2”,但WampServer不会启动,并出现此错误:
2023-02- 22 T15:59:25.510378Z 1 [错误] [MY-011087] [服务器]服务器('2')和数据字典('1')的表名小写设置不同。
我认为我需要重新初始化服务器,但我不知道如何做到这一点。This post给出了如何在Linux中做到这一点的明确说明。
重新初始化服务器是正确的解决方案吗?如果是,有人知道如何在Windows 11上使用WampServer 3.3.1执行此操作吗?如果不知道,我的下一步是什么?
我还试过其他方法,但没有成功:
安装最新版本的MySQL 8.0.32,编辑my.ini文件以添加lower_case_table_names = 2,然后启动WampServer并切换到新版本的MySQL。这会产生相同的错误,即服务器/数据字典不匹配。
启动phpMyAdmin并尝试将lower_case_table_names设置从1更改为2,但收到此变量为只读的错误。
在wp-config.php中将前缀改为小写,这样可以消 debugging 误,但直到我退出时才生效。我无法登录,必须在wp-config.php中将前缀恢复为大写,然后重新登录WordPress,并重新启动网站功能。

92dk7w1h

92dk7w1h1#

更改前缀后无法登录的原因是用户角色缓存在选项表中。
根据上面的错误,看起来您将$table_prefix_PREFIX_更改为_prefix_。因此,这就是我在下面的UPDATE语句中使用的内容。
除了修改$table_prefix,您还需要更新数据库中的一些值:

UPDATE _prefix_usermeta
SET meta_key = REPLACE(meta_key, '_PREFIX_', '_prefix_')
WHERE BINARY meta_key LIKE '%\_PREFIX\_%';

UPDATE _prefix_options
SET option_name = REPLACE(option_name, '_PREFIX_', '_prefix_')
WHERE BINARY option_name LIKE '%\_PREFIX\_%';

有可能是你的事件插件以其他方式缓存了旧的前缀。你使用的是什么插件?

在Windows上重新初始化MySQL

以下说明基于以下内容:

  • MySQL数据库8.0.32
  • 名为MySQL80的MySQL Windows服务
  • mysqld.exe的路径:C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe
  • my.ini的路径:C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
  • datadir的路径:x1米11米1x

1.以管理员身份打开cmd.exe
1.停止MySQL服务

net stop MySQL80

1.在my.ini的[mysqld]部分中查找并更改或添加"lower_case_table_names = 2
1.移动当前数据目录

move "C:\ProgramData\MySQL\MySQL Server 8.0\Data" "C:\ProgramData\MySQL\MySQL Server 8.0\Backup"

1.创建新数据目录

mkdir "C:\ProgramData\MySQL\MySQL Server 8.0\Data"

1.初始化MySQL

"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --initialize --lower_case_table_names=2 --console

1.记下initialize生成的新临时密码
1.启动MySQL服务

net start MySQL80

1.使用新密码(来自步骤7)

mysql -uroot -p

登录mysql
1.设置新密码

mysql> ALTER USER USER() IDENTIFIED BY 'your_new_root_password'

,或者,如果您希望密码为空:

mysql> SET PASSWORD FOR root@localhost = '';

相关问题