查询在Mysql数据库中不起作用


Query not working in Mysql database

MySQL数据库让我头疼不已。这是我的问题。

我正在开发一个以SQL Server为数据库的Php网站,一切都很好数据库1

在我不得不将数据库更改为MySQL之前,我已经完成了这项工作,并创建了一些存储过程和函数,这里的一切都很好数据库2

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

如果我在DB2select * from Online_Patient;中激发这个查询,没有错误。

DB3中的相同查询抛出错误:

错误代码:1146。表"Online_Ppatient"不存在

但当我将查询更改为select * from online_patient;时,它会给出正确的结果。

那么,有什么方法可以解决这个错误吗?或者我必须更改所有查询和存储过程吗?存储过程中有动态查询,所以无法将大写转换为小写。

找到您的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

如果设置为0,则表名将按指定存储,并且比较区分大小写。如果设置为1,则表名以小写形式存储在磁盘上,并且比较不区分大小写。如果设置为2,则表名按给定值存储,但比较时使用小写字母。此选项也适用于数据库名称和表别名。有关更多信息,请参阅第10.2.2节"标识符大小写敏感性"。

然后重新启动mysql服务器。