我有一个问题,我的生产服务器运行Unix,我的开发服务器运行MS Windows.问题是Windows不区分大小写,而Unix则不区分大小写.因此,我在生产服务器上设置的表使用大写表名称,即"客户",在Windows上,表名称是小写的"客户".
所有这一切都很好,直到你需要从一个盒子到另一个盒子获取数据,并且你的SQL导出说是以小写形式插入"customers",并且presto"Unkown table customers".由于生产服务器当前处于共享主机方案中,因此我无法更改设置并安装忽略大小写的密钥.
所以我的问题是,有没有办法让Windows将表转换回正确的情况,或者是否有一些设置我可以包含在导出SQL文件中,这样我就可以上传数据而不会出现这个问题.
谢谢
UPDATE
以下是我发现的其他人遇到此问题.
如果您已经在Windows上设置了运行MySQL的表,则将lower_case_table_names = 2添加到my.cnf或my.ini文件中将不会自动更改表的大小写,即使它们最初是使用大写或混合大小写名称创建的.
即使在my.cnf文件中设置了lower_case_table_names = 2,CREATE TABLE "MyTable"也会创建一个新表"mytable" 而不是 "MyTable".
要解决此问题,请使用此方法
这是唯一可行的方法.希望这有助于某人.
cod*_*key 21
为避免数据库或表名字母的数据传输问题,您有两种选择:
例外:如果您正在使用InnoDB表并且您试图避免这些数据传输问题,则应在所有平台上将lower_case_table_names设置为1以强制将名称转换为小写.
如果您计划在Unix上将lower_case_table_names系统变量设置为1,则必须先将旧数据库和表名转换为小写,然后再停止mysqld并使用新变量设置重新启动它.
cha*_*aos -1
Windows 关于大小写的通用指导思想是“不区分大小写,存储大小写”。这意味着 Windows 永远不会丢弃您的大小写,因此,为什么 Windows 上的表格是小写的,这有点神秘。
如果这是一个愚蠢的问题,我深表歉意,但是您是否尝试过重命名 Windows 计算机上的表,以便它们具有正确的大小写模式?
归档时间: |
|
查看次数: |
27332 次 |
最近记录: |