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 上。”