我在运行同时写入数据库的多个进程时遇到了问题(同一个表但不同的记录)。我可以运行一个进程并让我的程序写入数据库,但是当我尝试运行多个进程时,我无法从其他进程连接到数据库。特别是,我得到:
OSError: [Errno 113] No route to host
字符串
我猜这与数据库锁有关,但我没有足够的经验来确定这一点。
以下是我如何启动mysql服务器:
mysqld_safe --socket=mysql.sock --log-error=mysql.log --datadir=mysql_data --pid-file=mariadb.pid --transaction-isolation=READ-COMMITTED &
型
我最初没有--transaction-isolation=READ-COMMITTED
,但我添加了它,因为我认为它可能会有帮助,但它没有。
我想知道我是否能得到一些指导,如何使这个工作。
编辑:我的应用程序基本上是一个Python脚本,使用Optuna,一个机器学习超参数优化框架。相关代码为:
storage_name = "mysql+pymysql://mdanb:password@localhost:3306/optuna_db"
study = optuna.create_study(direction="maximize",
storage=storage_name,
study_name=study_name,
load_if_exists=True,
sampler=optuna.samplers.TPESampler(seed=seed))
型
我基本上是从不同的节点多次运行脚本,并在运行脚本的任何示例之前运行mysqld_safe --socket=mysql.sock --log-error=mysql.log --datadir=mysql_data --pid-file=mariadb.pid --transaction-isolation=READ-COMMITTED &
一次。第一个示例总是有效的,但之后的任何示例都不起作用。
1条答案
按热度按时间kwvwclae1#
如果我对您的问题理解正确的话,一个可能的解决方案是使用连接池来管理数据库连接。这将使多个进程能够共享到数据库的连接池,而不是每个进程都尝试独立连接。