我有个奇怪的问题。我有MySql工作台,用来编写MySQL数据库的查询(xampp3.2.1)。一切正常,但最近我发现自己不得不分析我的应用程序发送的查询,所以在配置文件(my.ini)中我添加了这一行:
general_log = 1添加了这一行之后,我的服务器启动了,我可以通过工作台连接到它,但是当我试图从我的数据库中获取数据时。
SELECT * FROM applicantsDB.Applicants;我得到了
错误代码: 1146。表'applicantsDB.Applicants‘不存在
如果日志记录关闭,则相同的查询将成功。我仍然可以从我的其他数据库中获得数据。是什么导致了这一切?
编辑现在它甚至不工作时,日志记录是关闭(其他dbs是好的)。尝试创建一个新的db并从applicantsDB导入架构。工作正常直到我决定重新启动服务器。如果我在没有登录的情况下做同样的事情,那么一切都很好(跨重新启动),但是当我启用日志时,所有的东西都会中断。
编辑V2
样本错误日志:
2014-04-17 10:20:26 1878 InnoDB: Error: table 'applicantsdb/applicants'
InnoDB: in InnoDB data dictionary has tablespace id 50,
InnoDB: but the tablespace with that id has name applicantsDB/applicants.
InnoDB: Have you deleted or moved .ibd files?
InnoDB: Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting-datadict.html
InnoDB: for how to resolve the issue.
2014-04-17 10:20:26 1878 InnoDB: Error: table 'applicantsdb/files'
InnoDB: in InnoDB data dictionary has tablespace id 52,
InnoDB: but the tablespace with that id has name applicantsDB/files.
InnoDB: Have you deleted or moved .ibd files?
InnoDB: Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting-datadict.html编辑V3
当我用小写的名称创建数据库时,一切都很好。不过,这并不能解释启用日志记录会破坏数据库的原因。
发布于 2014-04-21 21:24:48
您当然有一个问题,但这似乎与启用一般日志记录无关。您确定这些错误之前不是一直在填充错误日志吗?您只是在对启用general_logging进行了调查之后才注意到这些错误吗?
启用general_logging可能并导致服务器似乎挂起。常规日志记录将记录每一个抛出到mysql的查询(甚至一个查询都会导致语法错误)。
这可能导致文件大小的增长比预期的要快得多。跑
show variables like 'general_log_file';然后从shell命令行检查该路径的磁盘使用情况。
df -h /var/log/mysql/mysql.log如果报告为0,可用和100%使用,那么它非常预期mysql会挂起。
当任何日志(一般的、二进制的、错误的)由于空间耗尽而无法进一步写入时,mysql就定义了这种行为。这个想法是,在空间可用之前,它只会一直存在。
为了补救这一问题,您需要将日志添加到具有足够空间的文件系统中,或者在您不关心的情况下只删除它。然后,要么重新启动w/ general_log变量,指向有足够空间的文件系统来装载流量,要么向现有的文件系统添加更多的空间。
https://dba.stackexchange.com/questions/63394
复制相似问题