查询在 Mysql 数据库中不起作用
Posted
技术标签:
【中文标题】查询在 Mysql 数据库中不起作用【英文标题】:Query not working in Mysql database 【发布时间】:2016-09-09 07:10:58 【问题描述】:我对 mysql 数据库感到非常头疼。这是我的问题。
我正在开发一个使用 SQL Server 作为数据库的 php 网站,一切正常。 数据库 1
我必须将数据库更改为 MySQL,我已经完成并创建了一些存储过程和函数,这里一切正常。 数据库 2
现在我必须将 MySQL 数据库转移到另一个 MySQL 服务器,database 3。这里出现问题是因为现在我创建的旧存储过程和查询不起作用。我的 DB3 结构与 DB2 相同。
如果我在 DB2 select * from Online_Patient;
中触发此查询,则不会出错。
DB3 中的相同查询会引发错误:
错误代码:1146。表“Online_Patient”不存在
但是当我将查询更改为 select * from online_patient;
时,它会给出正确的结果。
那么有什么办法可以解决这个错误,或者我必须更改所有查询和存储过程,存储过程中有动态查询,所以无法将大写字母转换为小写字母。
【问题讨论】:
检查数据库的排序规则。将其设置为不区分大小写。 This 可能会有所帮助。 我正在使用 MySQL 工作台,您能指导我如何操作吗? 我建议将表格重命名为小写。最好使用小写的表名。 你的 mysql 服务器是在 Windows 还是 Unix 或 Linux 上运行的? @Reno 它在 Windows 中 【参考方案1】:找到你的 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服务器。
【讨论】:
这篇文章也可能有帮助:dev.mysql.com/doc/refman/5.7/en/… 我的数据库在服务器上,我该如何更改 my.cnf ?服务不会让我更改 my.cnf 文件,你不觉得吗?如果可能,请分享。 如果您有权访问服务器并有权更改 conf 文件,则不会有问题。如果您无权访问,则应重命名所有表或更改查询。我没有看到其他解决方案。以上是关于查询在 Mysql 数据库中不起作用的主要内容,如果未能解决你的问题,请参考以下文章