我正在将数据库从H2转换为MySQL,并且H2导出其表的方式都是IN_UPPERCASE_CHARACTERS。 collation是否仅适用于数据并且我手动替换表名?
答案 0 :(得分:1)
MySQL排序规则仅适用于数据库中列的内容。它们不是你问题的一个因素。
列名,索引名等都是不区分大小写的。
在Windows和Mac HFS上,表名(如文件名)不区分大小写。在Linux / BSD / Unix上,它们与文件名一样,区分大小写。
你可以做很多事情来解决所有这些问题。见这里。
http://dev.mysql.com/doc/refman/5.6/en/identifier-case-sensitivity.html
如果您的MySQL数据库在Windows(或Mac HFS)平台上运行,您可能应该什么都不做。如果它位于* nix框中,您可以考虑重命名表,使它们具有与查询代码相同的大小写。
RENAME `TABLENAME` TO `tablename`
或者,您可以考虑设置lower_case_table_names=1
,重命名所有表格,使其具有小写名称,然后从那里开始。这可能会为您提供最具弹性的编码环境来使用您的数据库:它会使您的表名在代码中不区分大小写。当然,如果您有两个名为tablecase
和TABLECASE
的不同表,则无效。