不同服务器中的表格区分大小写问题

我在三个不同的服务器上工作,它们是unix / windows / unix。

case-1 :在我的loacl服务器是unix我有一个表名Country_master及其字段pk_CountryId,CountryName等

case-2 :在我的Demo服务器中,窗口名称自动更改为country_master。

case-3 :在我的Live服务器是unix表名country_master。

但在我的代码表名称是Country_master,所以它给了我这样的错误

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]: Base table or view not found: 1146 Table 'markets.Country_master' doesn't exist'.

我可以有任何方法不要更改数据库中的表名和代码,但它需要小写?


如果您正在使用MySQL,则可以使用以下指令在my.conf中设置表名和列名区分大小写

set-variable = lower_case_table_names=1

更新后不要忘记重启服务器。 如果在所有服务器中使用相同的列名称会更好


您可以通过设置lower_case_table_names系统变量来更改区分大小写。 看到这里的指示:

http://dev.mysql.com/doc/refman/5.6/en/identifier-case-sensitivity.html


从精美的手册:

在MySQL中,数据库对应于数据目录中的目录。 数据库中的每个表对应于数据库目录中的至少一个文件(可能更多,取决于存储引擎)。 触发器也对应于文件。 因此,底层操作系统的区分大小写在数据库,表和触发器名称的区分大小写的情况下起作用。

因此,表名称区分大小写取决于底层文件系统:它们(通常)在Windows和OSX上不区分大小写,但在Linux上区分大小写。 此行为部分取决于lower_case_table_names设置:

如果设置为0,则表名按指定进行存储,并且比较区分大小写。 如果设置为1,表名将以小写形式存储在磁盘上,并且比较不区分大小写。 如果设置为2,则表名按照给定值存储,但以小写字母进行比较。 该选项也适用于数据库名称和表别名。

所以你有各种事情会影响你的表名的区分大小写。 唯一理智的解决方案(IMO)应始终使用小写字母表名,以便您不必担心; 您还应该使用小写字母列名称以保持一致。

链接地址: http://www.djcxy.com/p/69213.html

上一篇: Case Sensitive issue of tables in different server

下一篇: mysql case sensitive table names in queries