【发布时间】:2013-09-19 02:13:43
【问题描述】:
我正在寻求有关在我的厨师食谱中定义优先级的帮助。
配方应该在数据库中导入一个 sql 转储,然后对数据库执行 2 个 mysql 查询。
我正在使用 Chef Solo。
第一个 mysql_database 操作:查询导入转储效果很好 但是其他两个查询似乎什么也没做,因为转储似乎仍在数据库中导入数据,并且运行时数据不存在。随机执行?
我的食谱:
mysql_database node['wp-dev']['database'] do
connection ({:host => "localhost", :username => 'root',
:password => node['mysql']['server_root_password']})
#NOW THE SQL SCRIPT importing the dump - WORKING
sql { ::File.open("/tmp/database.sql").read }
#NOW THE 2 QUERIES - Not working at first Run
sql "UPDATE WORKING QUERY WHEN COPIED IN MYSQL 1"
sql "UPDATE WORKING QUERY WHEN COPIED IN MYSQL 2"
action :query
end
我不知道如何解决这个问题,或者如何使用 only_if 在运行查询之前检查导入是否完成。
【问题讨论】:
-
sql代码在哪里?
-
这是非常简单的查询,我认为 sql 代码不是问题,因为生成的查询在复制/粘贴到 mysql 时效果很好。
-
@user2793488 你有解决这个问题的办法吗?
-
我也遇到过同样的问题。它是由延迟连接关闭引起的。查询本身是有序的(当使用两个数据库资源时)。我尝试安装基本架构,然后安装一些用户数据。第二个查询在第一个查询之前关闭了连接(问题:为什么他们使用2个连接?)..这导致mysql在最后一个之前执行第二个。但是,mysql_database_provider 在代码中调用
close。奇怪的问题,修复之前无法使用。
标签: chef-recipe cookbook chef-infra