查询无法在Mysql数据库中工作

时间:2016-05-13 07:39:08

标签: php mysql database stored-procedures

我对MySQL数据库感到非常头疼。这是我的问题。

我正在用Php开发一个以SQL Server为数据库的网站,一切正常。 数据库1

我必须将数据库更改为MySQL,我已经完成了并创建了一些存储过程和函数,这里的一切正常。 数据库2

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

相同

如果我在 DB2 runtime.txt中触发此查询没有错误。

DB3 中的相同查询会引发错误:

  

错误代码:1146。表' Online_Patient'不存在

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

有没有办法解决这个错误或者我必须更改所有查询和存储过程,存储过程中有动态查询,所以只能将大写转换为小写。

1 个答案:

答案 0 :(得分:2)

找到您的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服务器。