从MySQL 5.6升级到5.7

时间:2016-08-14 02:12:25

标签: mysql upgrade freebsd case-sensitive

我使用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 )中,但是当我在show variables like '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我发现了这条评论:

  

如果您使用的是InnoDB表,则应在所有平台上将此变量设置为1,以强制将名称转换为小写。

似乎有人决定“你应将此变量设置为1”表示“此变量必须为1”并删除了更改它的功能。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

我跑了

find / -name "my*.cnf"

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