C++ 另一个mysqld进程使用相同的InnoDB数据或日志文件
我有一个在linux系统上运行的mysql服务器。我已经运行了一个C++的PROG,它用当前的日期和时间戳来建立数据库。我试图在C++中运行另一个进程,它访问不同的数据库,但我有错误。p> 错误如下:C++ 另一个mysqld进程使用相同的InnoDB数据或日志文件,c++,mysql,C++,Mysql,我有一个在linux系统上运行的mysql服务器。我已经运行了一个C++的PROG,它用当前的日期和时间戳来建立数据库。我试图在C++中运行另一个进程,它访问不同的数据库,但我有错误。p> 错误如下: 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/ibdat
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
有人能解释一下这里出了什么问题吗
谢谢本页:
讨论可以为MyISAM数据库打开或关闭的“外部锁定”,以支持一组数据上的多个服务器。然而,它似乎不适用于InnoDB。本页:
说这在InnoDB中是不可能的,因为它只能在只读文件系统上完成,而InnoDB不能在这些系统上工作
因此,答案似乎是您无法做到这一点,原因有两个:第一,因为您仍然在填充数据库,同时也想读取它,第二,因为您使用的是InnoDB而不是MyISAM。我通过杀死mysqld进程解决了这个问题 要在Linux上杀死所有mysqld进程,请执行以下操作:
至少等待10秒钟,使其完全关闭 现在,运行这个命令来检查是否还有一些mysqld进程剩余?
如果您仍能看到更多信息,请运行此命令:
这将杀死所有mysqld进程。zwinck Thank使我对mysql的理解更加清晰。谢谢@AnasSafi。我在macOS上的MAMP PRO上尝试了您的解决方案,效果很好。
# killall mysqld mysqld_safe
# ps aux | grep mysqld
killall -9 mysqld mysqld_safe