2013-03-19 18 views
3

我有一個預先安裝了PHP,Apache2和MySQL的自定義虛擬機基礎框。所以我可以使用這個盒子啓動虛擬機,它不需要安裝Chef Cookbooks上面的任何一個。當我從Vagrant的Chef Recipe運行PHP腳本時,MySQL不工作

但是,我嘗試安裝一個Chef Cookbook,但它失敗了。我試圖安裝的Cookbook運行一個PHP腳本,它連接並使用MySQL數據庫。

它失敗的原因是因爲PHP無法連接到mysql服務器。我認爲這是因爲腳本嘗試連接時MySQL沒有啓動(或準備好)。它只在啓動虛擬機時失敗。當我提供它(流浪漢條款)時,它就可以工作。所以這就是爲什麼我認爲當PHP腳本嘗試連接時MySQL還沒有準備好。

的錯誤:

的mysql_connect():無法通過套接字 (2)在 '/var/run/mysqld/mysqld.sock' 連接到本地MySQL服務器.....

而且在廚師食譜配方代碼:

execute "doInstall" do 
    cwd "/vagrant" 
    command "php path/to/my/script.php" 
end 

任何想法?

+0

我有這個問題,並在這裏討論它:github.com/xforty/vagrant-drupal/issues/11。但我沒有答案。 – rjmunro 2013-03-20 10:20:43

回答

1

也許你可以在你的食譜開始時做了

service "mysql" do 
    action :start, :immediately 
end 

或者乾脆做一個啓發式

execute "doInstall" do 
    cwd "/vagrant" 
    command "sleep 10; php path/to/my/script.php" 
end 

這似乎有點髒我,但可能會很快解決您的問題。

+0

這似乎工作,但只有第二次嘗試(引導虛擬機)。所以我先啓動它,但仍然失敗。但是,當我關閉並重新啓動它時,它似乎能夠工作,但是如果我再次關閉它並啓動它,它就會失敗......它失敗並且處於一種模式中。 – user2166351 2013-03-20 09:23:14

+0

我也試過睡10-20秒,但同樣的事情發生。 – user2166351 2013-03-20 09:31:49

+0

嗯,可能是MySQL相關的 - 服務正在運行,但不接受連接的一些奇怪的原因 – cmur2 2013-03-20 09:52:07

相關問題