当前位置: 首页 > 面试题库 >

MySQL区分大小写的表转换

法子昂
2023-03-14
问题内容

我有一个PHP代码库,用于混合环境下处理我们的MySQL表。例如,xar_intakeformgenerator_ChangeLog

我们的代码也可以在Windows上运行,并且在不了解之前,我们已经将多个数据库导入到Windows服务器上。这导致Windows
MySQL将所有表名更改为小写。(xar_intakeformgenerator_changelog)。现在,我们知道如何防止这种情况发生在新数据库中。(Set lower_case_table_names)并且,代码在Windows服务器上运行良好,因为MySQL根本不在乎Windows上表的大小写。

这是问题所在。Windows服务器使我们感到悲伤,我们需要将所有数据库移至Linux服务器。由于所有表名都转换为小写,因此该代码在Linux上将不起作用。幸运的是,Xaraya创建了表映射。因此,从理论上讲,我可以为这些数据库建立新的代码库,并更改每个模块的映射以使用小写表。或者,我们可以在将表名称导入Linux机器后手动更改表名称,以使表大小写正确。

更改lower_case_table_names不会纠正设置该标志之前已损坏的数据库。这些都有小写的表名。

我对这两种选择都不陌生。有谁知道处理这个问题的巧妙方法?


问题答案:

好。我找到了答案。

在Linux服务器上,我需要运行以下命令以将Linux生成的数据库中的所有表名更改为小写:

  1. 如何生成将模式中的所有表重命名为小写形式的SQL脚本:

    select concat('rename table ', table_name, ' to ' , lower(table_name) , ';')
    

    from information_schema.tables where table_schema = ‘your_schema_name’;

  2. 将数据库重命名phpmyadmin为小写名称。

  3. 修改了my.cnf在Linux服务器上使用lower_case_table_names=1

  4. 重新启动mysql。

之后,我的代码将使用小写的表名。因此,我能够导入Windows,并在两者上具有相同的代码库工作。



 类似资料:
  • 问题内容: 我正在尝试提出一个要求区分大小写的结果的请求。 例如在我的数据库中 该请求是 但我有3行作为结果,我只想要abcdef 我试图找到一个解决方案 但是我有这个错误: 未知归类:’Latin1_General_CS_AS’{“成功”:false,“错误”:“#1273-未知归类:’Latin1_General_CS_AS’”} 谢谢 问题答案: 感谢您的帮助,我找到了不是latin1 ut

  • 问题内容: 我有一个MySQL查询: 而且我的表使用MyISAM编码为utf8_general_ci。 搜索似乎区分大小写。 我不知道如何解决它。出了什么问题和/或如何解决? 问题答案: 尝试这个: 或(让您看到差异)

  • 问题内容: MySQL中的表名是否区分大小写? 在Windows开发机器上,我拥有的代码能够查询我的表,这些表看起来都是小写的。当我在数据中心中部署到测试服务器时,表名似乎以大写字母开头。 我们使用的服务器都在Ubuntu上。 问题答案: 一般来说: 数据库和表名在Windows中不区分大小写,在大多数Unix版本中都不区分大小写。 在MySQL中,数据库与data目录中的目录相对应。数据库中的每

  • 问题内容: MySQL在默认的排序规则下运行几乎所有的字符串比较。我有不区分大小写的排序规则,需要运行不区分大小写的。有什么方法可以强制使用当前排序规则,而不是始终执行区分大小写的比较?我愿意升级MySQL(当前运行5.1)以获取更多功能… 问题答案: 如果不起作用,则需要创建另一个函数。

  • 问题内容: 谁能告诉我默认情况下MySQL 查询是否区分大小写?如果没有,我将要发送什么查询,以便执行以下操作: 实际上,的真正价值是。 问题答案: 除非您进行二进制比较,否则它们 不区分大小写 。