另一个使用相同的InnoDB数据或日志文件的mysqld进程

时间:2011-05-10 23:59:39

标签: c++ mysql

我有一个在linux系统上运行的mysql服务器。我已经运行了一个c ++ prog,它正在构建具有当前日期和时间戳的数据库。我正在尝试在c ++中运行另一个访问不同数据库的进程,但我遇到了错误。

错误如下:

InnoDB: check that you do not have another mysqld process
InnoDB: using the same InnoDB data or log files
InnoDB: Unable to lock /var/lib/mysql/ibdata1, error: 11

请有人解释这里出了什么问题

谢谢

2 个答案:

答案 0 :(得分:1)

我通过杀死mysqld进程解决了这个问题

要杀死Linux上的所有mysqld进程

# killall mysqld mysqld_safe

至少等待10秒钟,使其干净地关闭。

现在,运行此命令以检查是否还剩下一些mysqld进程?

# ps aux | grep mysqld

如果您仍然可以看到除运行此命令之外的内容:

killall -9 mysqld mysqld_safe

这将杀死所有mysqld进程。

答案 1 :(得分:0)

此页面: http://dev.mysql.com/doc/refman/5.0/en/external-locking.html

谈论“外部锁定”,可以打开或关闭MyISAM数据库以支持一组数据上的多个服务器。但它似乎不适用于InnoDB。而这个页面: http://book.opensourceproject.org.cn/lamp/mysql/mysql5cert/opensource/0672328127/ch42lev1sec1.html

说InnoDB是不可能的,因为它只能在只读文件系统上完成,InnoDB不适用于那些。

所以似乎答案是你不能这样做,原因有二:首先是因为你仍然想要阅读它而仍然填充数据库,其次是因为你使用的是InnoDB而不是MyISAM。