我正在寻找一些关于在我的厨师食谱中定义优先级的帮助。
配方应该在数据库中导入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在运行查询之前检查导入是否已完成。
答案 0 :(得分:2)
解决方案是使用不同的mysql_datase块,并在完成时通知另一个块。
mysql_database 'insertTestData' do
connection mysql_connection_info
database_name node['some']['database']
sql { ::File.open(/somePath/testData.sql).read }
action :nothing
end
mysql_database 'createTables' do
connection mysql_connection_info
database_name node['some']['database']
sql { ::File.open(/somePath/tableCreate.sql).read }
action :query
notifies :query,"mysql_database[insertTestData]"
end
答案 1 :(得分:1)
您需要为正在执行的每个sql语句创建一个单独的mysql_database块。您不能在同一个查询中有多个SQL查询。