gpt4 book ai didi

mysql - MySQL 5.6 升级到 5.7 后数据无法再访问

转载 作者:行者123 更新时间:2023-11-29 20:33:05 29 4
gpt4 key购买 nike

我使用 pkg install mysql57-server 命令将 FreeBSD 服务器从 MySQL 5.6 升级到 5.7,并启用了对 InnoDB 引擎的支持。在解决了更改的配置问题以便我可以成功运行 mysql_upgrade -u root -p 后,它报告几乎所有现有的表都不存在 - 因为它们存储在磁盘上 StudlyCaps 文件名。

我有

lower_case_table_names = 0

在当前事件的配置文件(/usr/local/etc/mysql/my.cnf)中,但是当我运行显示变量如'lower_case_table_names';mysql 解释器中我得到

+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_table_names | 1 |
+------------------------+-------+
1 row in set (0.00 sec)

我也尝试过

root@localhost [none]> set lower_case_table_names=0;
ERROR 1238 (HY000): Variable 'lower_case_table_names' is a read only variable

the MySQL documentation for lower_case_table_names我发现了这个评论:

If you are using InnoDB tables, you should set this variable to 1 on all platforms to force names to be converted to lowercase.

似乎有人认为“您应该将此变量设置为1”意味着“此变量必须为1”并删除了更改它的功能。

除其他问题外,这意味着 phpMyAdmin 现在以所有小写字母显示表名称,而不是构建它们时使用的更具可读性的 StudlyCaps。我还担心这会破坏我所有使用设计的 StudlyCaps 表名称编写 PHP 代码的网站。

有没有办法解决恢复到 MySQL 5.6 的问题?

最佳答案

问题原来是由 5.7 升级安装的 /usr/local/etc/mysql/my.cnf 文件导致的,该文件覆盖了 /usr/local 中的设置/etc/my.cnf 我知道并正在编辑。

一旦我删除(重命名)有问题的“默认”文件,我就可以在 /usr/local/etc/my.cnf 中设置 lower_case_table_names=0 并当我重新启动服务器时,可以识别更改。

以为我已经跑了

find / -name "my*.cnf"

查找任何事件的配置文件。要么我没有看到 /usr/local/etc/mysql 中的那个,或者(更有可能)我没有意识到它会覆盖我在 /usr/中设置的值local/etc/my.cnf:我的(无效)假设是,一旦找到配置文件,MySQL 将停止寻找另一个配置文件。

关于mysql - MySQL 5.6 升级到 5.7 后数据无法再访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38938576/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com