查询不能在Mysql数据库中工作

问题描述:

我对MySQL数据库感到非常头痛。这是我的问题。查询不能在Mysql数据库中工作

我正在开发一个网站在PHP与SQL Server作为数据库,一切工作正常。 数据库1

比我必须改变数据库到MySQL,我已经做到了这一点,并创建了一些存储过程和功能,一切工作正常。 数据库2

现在我有MySQL数据库转移到另一个MySQL服务器,数据库。这里发生问题是因为现在我创建的旧存储过程和查询不起作用。我的DB3结构与DB2相同。

如果我在中激发此查询DB2select * from Online_Patient;没有错误。在DB3

同一查询抛出一个错误:

Error Code: 1146. Table 'Online_Patient' doesn't exist

但是,当我改变我的查询select * from online_patient;它给了我正确的结果。

那么,有没有办法解决这个错误还是我必须改变所有查询和存储过程,也有在存储过程中的动态查询,以便只可以大写不能转换为小写。

+1

检查数据库的排序规则。将其设置为不区分大小写。 [这](http://*.com/questions/1294117/how-to-change-collat​​ion-of-database-table-column)可能会有所帮助。 –

+0

我正在使用MySQL工作台,那么你能指导我如何做到这一点? – Archish

+0

我建议将表格改名为小写。以小写形式使用表名的最佳做法。 – sAcH

找到您的mysql配置文件。它应该被命名为my.cnf。您可以在输出开始处运行mysqld --help --verbose,这是您可以查找文件的默认位置。我的输出是:

Default options are read from the following files in the given order: 
C:\Windows\my.ini C:\Windows\my.cnf C:\my.ini C:\my.cnf C:\xampp\mysql\my.ini C:\xampp\mysql\my.cnf 

找到的lower_case_table_names指令并将其设置为1:

lower_case_table_names = 1

从MySQL文档:http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_lower_case_table_names

If set to 0, table names are stored as specified and comparisons are case sensitive. If set to 1, table names are stored in lowercase on disk and comparisons are not case sensitive. If set to 2, table names are stored as given but compared in lowercase. This option also applies to database names and table aliases. For additional information, see Section 10.2.2, “Identifier Case Sensitivity”.

然后,重新启动MySQL服务器。

+0

也可以这篇文章:http://dev.mysql.com/doc/refman/5.7/en/identifier-case-sensitivity.html –

+0

我的数据库是在服务器上,所以我怎么能更改my.cnf?服务不会让我改变my.cnf文件你不觉得吗?如果有可能请分享。 – Archish

+0

如果您有权访问服务器和更改conf文件的权限,则不会出现问题。如果您无法访问,则应重新命名所有表或更改查询。我没有看到其他解决方案。 –