MySQL常见错误

  • 介绍

本文介绍一些在使用MySQL时经常遇到错误案例以及解决办法。

  • InnoDB: Fatal error: cannot allocate memory for the buffer pool

[codesyntax lang=”ini”]

如果启动MySQL失败,在日志文件(/var/log/mysql/error.log)中看到有上面的错误的话,可能是因为缓存设置的过大了——一般不能超过操作系统的内存大小。修改办法如下:

找到MySQL的配置文件my.conf,然后修改mysqld节点下的如下配置(没有的话添加即可):

innodb_buffer_pool_size = 64M

  • Checking for tables which need an upgrade, are corrupt or were not closed cleanly.
  • /etc/init.d/mysql: fork: Cannot allocate memory
  • ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails

在对设置有外键的表上执行delete语句时,就有可能发生这种错误。要了解这个错误的原因,首先要了解下面的内容:

在添加外键时,可以设置删除时的动作(RESTRICT、CASCADE、NO ACTION、SET NULL)。如果你设置的值为RESTRICT的话就会发生上面的错误。同样,在执行update操作时,也可以这样设置。

  • ERROR 1005 (HY000): Can’t create table (errno: 150)
  • ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
  • SQL Mode

which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

发生上面的错误,是因为select子句中出现了group中没有的聚合字段。通过语句select @@sql_mode;就能查询到当前数据库的设置。

我们可以通过命令来修改该模式 set @@sql_mode = '';

发表评论

电子邮件地址不会被公开。 必填项已用*标注