我对MySQL数据库感到非常头疼。这是我的问题。
我正在用Php开发一个以SQL Server为数据库的网站,一切正常。 数据库1
我必须将数据库更改为MySQL,我已经完成了并创建了一些存储过程和函数,这里的一切正常。 数据库2
现在我必须将MySQL数据库转移到另一个MySQL服务器数据库3 。这里出现问题,因为我现在创建的旧存储过程和查询无法正常工作。我的 DB3 结构与 DB2 。
相同如果我在 DB2 runtime.txt
中触发此查询没有错误。
DB3 中的相同查询会引发错误:
错误代码:1146。表' Online_Patient'不存在
但是当我将查询更改为select * from Online_Patient;
时,它会给我正确的结果。
有没有办法解决这个错误或者我必须更改所有查询和存储过程,存储过程中有动态查询,所以只能将大写转换为小写。
答案 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服务器。