我正在使用Hibernate和mySQL。
我主要在windows上开发java应用程序。所有表都是用小写创建的。
当我在linux服务器上部署它时,我注意到这些表现在处于正确的大小(java命名约定)。这很好,但由于某种原因,我的oneToMany列表之一未加载。
除了 “from”+ class.getName()
之外,我没有使用任何其他查询我尝试更改 my.conf 中的 * lower_case_table_names = 2 * ,以便在Windows中匹配,但这对我们没有帮助
还有其他想法吗?
<小时/> 实际上,这是愚蠢的。这是我在应用程序中导致问题的逻辑,我希望做一些部分提取。
答案 0 :(得分:2)
您选择了错误的选项,手册中的引用:
http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html
lower_case_table_names =
0
表和数据库名称使用CREATE TABLE或CREATE DATABASE语句中指定的lettercase存储在磁盘上。名称比较区分大小写。如果在具有不区分大小写的文件名(例如Windows或Mac OS X)的系统上运行MySQL,则不应将此变量设置为0。如果在不区分大小写的文件系统上使用--lower-case-table-names = 0强制此变量为0并使用不同的字母表访问MyISAM表名,则可能会导致索引损坏。1
表名以小写形式存储在磁盘上,名称比较不区分大小写。 MySQL在存储和查找时将所有表名转换为小写。此行为也适用于数据库名称和表别名。2
表和数据库名称使用CREATE TABLE或CREATE DATABASE语句中指定的字母大小存储在磁盘上,但MySQL在查找时将它们转换为小写。名称比较不区分大小写。 仅适用于不区分大小写的文件系统! InnoDB表名以小写形式存储,与lower_case_table_names = 1一样。
选项2永远不会在Linux上运行,因为该系统区分大小写 在Linux和所有其他系统上,您需要使用选项1.
然后你的案例敏感性问题就会结束。