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服务器。