如何在 Ubuntu 中使 MySQL 表名不区分大小写?

51 mysql linux mysql-workbench ubuntu

我使用的是 Ubuntu 13.10 和 MySQL 5.6,我知道默认情况下,数据库名称和表名称在 Ubuntu(和其他一些 *nix 环境)中区分大小写。

现在,我想让 MySQL在 Ubuntu 中不区分大小写

是否可以?如果是,我该怎么做?

小智 61

打开终端并编辑 /etc/mysql/my.cnf

sudo nano /etc/mysql/my.cnf
Run Code Online (Sandbox Code Playgroud)

[mysqld]section.add下面:

lower_case_table_names = 1
Run Code Online (Sandbox Code Playgroud)

重启mysql

sudo /etc/init.d/mysql restart
Run Code Online (Sandbox Code Playgroud)

然后在这里检查:

mysqladmin -u root -p variables
Run Code Online (Sandbox Code Playgroud)

  • 如果此部分不可用,则必须添加。否则重启会失败。 (4认同)
  • 不幸的是,这不再适用于 MySQL 8.0。它必须在初始化之前设置。 (3认同)

Ger*_*ser 13

如果您lower_case_table_names使用现有表更改数据库堆栈溢出:MySQL > 表不存在。但它确实(或应该)发生。

在这种情况下,对此答案的评论对我有帮助:

我恢复了值,重新启动了数据库,导出了表,将值设置回 1,重新启动了数据库,重新导入了表,一切又恢复了。

  • 发生在我身上,我不知道我的最大心率为 197 bpm ;-) (2认同)

小智 6

这个问题给我带来了痛苦,Doctrine 生成了大写/CamelCase 表名,而 MySQL 将它们存储为小写!

它是通过更改my.cnf和添加解决的

lower_case_table_names = 1
Run Code Online (Sandbox Code Playgroud)

在 [mysqld] 部分下

可以找到 my.cnf:

  • 在 LAMPP/XAMPP... 下:

    /opt/lampp/etc/my.cnf

  • 独立的 mysql 服务器:

    /etc/mysql/my.cnf

然后重启MySQL服务器,一切都会好的。