时间:2021-07-01 10:21:17 帮助过:17人阅读
今天小秋说跑Ubuntu下Dotcms跑的有问题,我也就试验了一下,发现总是存在一个找不到表Dotcms.group_的问题,我数据库中查询了一下
今天小秋说跑Ubuntu下Dotcms跑的有问题,我也就试验了一下,发现总是存在一个找不到表Dotcms.group_的问题,我数据库中查询了一下是存在这个表的,但是在MySQL中却发现的确找不到这个表,想了想,可能是MySQL大小写敏感问题,看了一下Dotcms的文档,上面的确说过要将MySQL的配置更改一下,在my.cnf配置中加上一句话lower_case_table_names=1 然后再重新建表这问题就不存在了
查了一下关于MySQL 大小写问题,看下面:
在 MySQL 中,数据库和表对就于那些目录下的目录和文件。因而,,操作系统的敏感性决定数据库和表命名的大小写敏感。这就意味着数据库和表名在 Windows 中是大小写不敏感的,而在大多数类型的 Unix 系统中是大小写敏感的。
奇怪的是列名与列的别名在所有的情况下均是忽略大小写的,而表的别名又是区分大小写的。
要避免这个问题,你最好在定义数据库命名规则的时候就全部采用小写字母加下划线的组合,而不使用任何的大写字母。
或者也可以强制以 -O lower_case_table_names=1 参数启动 MySQLd(如果使用 --defaults-file=...\my.cnf 参数来读取指定的配置文件启动 MySQLd 的话,你需要在配置文件的 [MySQLd] 区段下增加一行 lower_case_table_names=1)。这样MySQL 将在创建与查找时将所有的表名自动转换为小写字符(这个选项缺省地在 Windows 中为 1 ,在 Unix 中为 0。从 MySQL 4.0.2 开始,这个选项同样适用于数据库名)。
当你更改这个选项时,你必须在启动 MySQLd 前首先将老的表名转换为小写字母。
换句话说,如果你希望在数据库里面创建表的时候保留大小写字符状态,则应该把这个参数置0: lower_case_table_names=1 。否则的话你会发现同样的sqldump脚本在不同的操作系统下最终导入的结果不一样(在Windows下所有的大写字符都变成小写了)