我有一个PHP代码库,用于混合环境下处理我们的MySQL表。例如,xar_intakeformgenerator_ChangeLog。
xar_intakeformgenerator_ChangeLog
我们的代码也可以在Windows上运行,并且在不了解之前,我们已经将多个数据库导入到Windows服务器上。这导致Windows MySQL将所有表名更改为小写。(xar_intakeformgenerator_changelog)。现在,我们知道如何防止这种情况发生在新数据库中。(Set lower_case_table_names)并且,代码在Windows服务器上运行良好,因为MySQL根本不在乎Windows上表的大小写。
xar_intakeformgenerator_changelog
Set lower_case_table_names
这是问题所在。Windows服务器使我们感到悲伤,我们需要将所有数据库移至Linux服务器。由于所有表名都转换为小写,因此该代码在Linux上将不起作用。幸运的是,Xaraya创建了表映射。因此,从理论上讲,我可以为这些数据库建立新的代码库,并更改每个模块的映射以使用小写表。或者,我们可以在将表名称导入Linux机器后手动更改表名称,以使表大小写正确。
更改lower_case_table_names不会纠正设置该标志之前已损坏的数据库。这些都有小写的表名。
lower_case_table_names
我对这两种选择都不陌生。有谁知道处理这个问题的巧妙方法?
好。我找到了答案。
在Linux服务器上,我需要运行以下命令以将Linux生成的数据库中的所有表名更改为小写:
如何生成将模式中的所有表重命名为小写形式的SQL脚本:
select concat('rename table ', table_name, ' to ' , lower(table_name) , ';')
from information_schema.tables where table_schema = ‘your_schema_name’;
将数据库重命名phpmyadmin为小写名称。
phpmyadmin
修改了my.cnf在Linux服务器上使用lower_case_table_names=1
my.cnf
lower_case_table_names=1
重新启动mysql。
之后,我的代码将使用小写的表名。因此,我能够导入Windows,并在两者上具有相同的代码库工作。