我可以在不区分大小写的文件系统上强制MySql表名称区分大小写

Bri*_*con 8 mysql case-sensitive

所以我们的目标环境是linux,默认情况下使mysql区分大小写.我知道我们可以使用lower_case_table_names变量使我们的linux环境不区分大小写,但我们宁愿不这样做.我们有几次因案例不匹配而被咬,因为我们的开发工具是OSX,而​​mysql在那里并不区分大小写.

有没有办法可以强制表名在我的OSX安装的MySql(如果重要的话,5.0.83)上区分大小写,以便在部署到linux上运行的集成服务器之前捕获表名称不匹配?

Mon*_*nch -1

此处最好的做法是修复表名称,以免出现任何冲突。仅根据大小写进行区分是一个坏主意,并且会导致混乱(正如您可能知道的那样)。

但请尝试在创建过程中在表名称周围使用单引号。这适用于 SUSE/Linux/MySQL 5.0,查询浏览器在 Windows 上运行。

CREATE TABLE  `MySchema`.`test` (
  `COMMENT` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE  `MySchema`.`Test` (
  `COMMENT` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into MySchema.test values ('this is table test' );
insert into MySchema.Test values ('this is table Test' );


select * from MySchema.test;
select * from MySchema.Test;
Run Code Online (Sandbox Code Playgroud)

如果不区分大小写的客户端请求使用错误大小写的表,您是否希望它失败?我相信如果 MySQL 数据库在 Linux 上运行,它应该会失败。

查看此链接 “一个值得注意的例外是 Mac OS X,它基于 Unix,但使用不区分大小写的默认文件系统类型 (HFS+)。但是,Mac OS X 还支持 UFS 卷,它区分大小写,就像在任何 Unix 上。”