1

美好的一天堆栈溢出。

我在将 sql 文件导入到我的 Windows 机器时遇到问题。sql文件来自linux机器。发生的情况是来自 linux 的表名是驼峰式大小写的,当迁移到 Windows 时,所有表名都变为小写。我不想调整我的代码以便能够访问我的数据库,所以无论如何我可以在 Windows 中实现驼峰式表名吗?

非常感谢。


从 linux 表名:-> FooBar

在windows中导入mysql工作台时:-> foobar

查询如下所示:

SELECT * FROM FooBar; // when the program is pointed to the database in windows, it will spit out that the table does not exist because the table name is "foobar"
4

1 回答 1

2

Linux 和 Windows 在两种操作系统存储表名的方式上存在差异(是否只允许小写)。这可以由lower_case_table_names系统变量控制。您的 Windows 安装可能将此值设置为 1,而您的 Linux 服务器将此值设置为 0。按照用户手册的“标识符大小写敏感性”部分,您有两个选择:

lower_case_table_names=1在所有系统上使用。这样做的主要缺点是,当您使用SHOW TABLESor时SHOW DATABASES,您看不到原始字母大小写的名称。

或者

lower_case_table_names=0在 Unix 和lower_case_table_names=2Windows 上使用。这将保留数据库和表名的字母大小写。这样做的缺点是您必须确保您的语句在 Windows 上始终以正确的字母大小写引用您的数据库和表名。如果您将语句转移到字母大小写很重要的 Unix,如果字母大小写不正确,它们将不起作用。

一些链接:

于 2012-11-06T06:09:03.800 回答