2013-05-22 23 views
2

我已經檢查了有關我的問題的其他問題和答案,似乎沒有什麼幫助解決它。CakePHP烘烤錯誤:數據庫連接「Mysql」缺失或無法創建

我正在使用vagrant percise64(Ubuntu的服務器12.04)與燈安裝。 在我的主機(桌面)上,我有myfinalproject目錄,其中包含提取的cakePHP版本2.3.5。 我已經設置了CakePHP所需的所有功能,並在CakePHP生成的頁面上顯示「Cake能夠連接到數據庫」。

當我嘗試烤一個新的模型/控制器或所有我得到以下錯誤:

Welcome to CakePHP v2.3.5 Console 
--------------------------------------------------------------- 
App : app 
Path: /home/shahar/development/myfinalproject/app/ 
--------------------------------------------------------------- 
Interactive Bake Shell 
--------------------------------------------------------------- 
[D]atabase Configuration 
[M]odel 
[V]iew 
[C]ontroller 
[P]roject 
[F]ixture 
[T]est case 
[Q]uit 
What would you like to Bake? (D/M/V/C/P/F/T/Q) 
> m 
--------------------------------------------------------------- 
Bake Model 
Path: /home/shahar/development/myfinalproject/app/Model/ 
--------------------------------------------------------------- 
Use Database Config: (default/test) 
[default] > default 
Error: Database connection "Mysql" is missing, or could not be created. 
#0 /home/shahar/development/myfinalproject/lib/Cake/Model/ConnectionManager.php(107): DboSource->__construct(Array) 
#1 /home/shahar/development/myfinalproject/lib/Cake/Console/Command/Task/ModelTask.php(900): ConnectionManager::getDataSource('default') 
#2 /home/shahar/development/myfinalproject/lib/Cake/Console/Command/Task/ModelTask.php(837): ModelTask->getAllTables(NULL) 
#3 /home/shahar/development/myfinalproject/lib/Cake/Console/Command/Task/ModelTask.php(926): ModelTask->listAll(NULL) 
#4 /home/shahar/development/myfinalproject/lib/Cake/Console/Command/Task/ModelTask.php(205): ModelTask->getName() 
#5 /home/shahar/development/myfinalproject/lib/Cake/Console/Command/Task/ModelTask.php(93): ModelTask->_interactive() 
#6 /home/shahar/development/myfinalproject/lib/Cake/Console/Command/BakeShell.php(108): ModelTask->execute() 
#7 /home/shahar/development/myfinalproject/lib/Cake/Console/Shell.php(392): BakeShell->main() 
#8 /home/shahar/development/myfinalproject/lib/Cake/Console/ShellDispatcher.php(200): Shell->runCommand(NULL, Array) 
#9 /home/shahar/development/myfinalproject/lib/Cake/Console/ShellDispatcher.php(68): ShellDispatcher->dispatch() 
#10 /home/shahar/development/myfinalproject/app/Console/cake.php(37): ShellDispatcher::run(Array) 
#11 {main} 

我試圖從我的應用程序目錄運行烘烤命令(雖然我看到的,路徑是確定),我得到了同樣的錯誤。 我已將database.phplocalhost更改爲127.0.0.1,並且仍發生同樣的錯誤。

我在這裏錯過了什麼?

編輯:由於人們建議我會檢查PDO擴展可用性,我做了一個小測試。 我用:

[email protected]:/etc/php5/cli$ php -i | grep -i pdo 
/etc/php5/cli/conf.d/pdo.ini, 
/etc/php5/cli/conf.d/pdo_mysql.ini, 
PDO 
PDO support => enabled 
PDO drivers => mysql 
pdo_mysql 
PDO Driver for MySQL => enabled 
pdo_mysql.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock 
+2

您是否正在從vagrant vm(通過ssh)或主機上運行CLI控制檯? – Tomdarkness

+0

在guest虛擬機(流浪盒)啓用PDO時從主機運行。也許我很愚蠢,這就是爲什麼它不起作用? –

+0

我有這個問題,我在主機上運行烘烤。如果您使用的是流浪者,請確保您在流浪者盒子上運行烘焙(ssh然後烘烤)。 – wenbert

回答

4

你有沒有啓用CLI PDO模塊?我認爲你可以有不同的php.ini cli/web(fpm)。

+0

請問我可以參考我的工作方式嗎?我記得PDO應該已經在php.ini中用PHP 5.3.x版啓用了,但我可能在這裏弄錯了。 –

+0

似乎PDO是MySQL 流浪漢@ precise64啓用:〜$ PHP --ri PDO PDO PDO支持=>啓用 PDO驅動程序=> mysql的 –

+0

取消註釋延長= 「pdo_mysql.so」 在/ opt/LAMPP /etc/php.ini – vnpnlz

0

嘗試(重新)安裝PHP MySQL支持

sudo apt-get install php5-mysql 
+0

還要確保你已經創建了數據庫。 –

+0

您的解決方案與配偶問題並無太大關係,因爲Vagrant端口轉發不像使用服務器上的SQL那樣工作,所以直接從服務器使用命令「解決」它。 –

3

只是爲了幫助Ubuntu的用戶出來: 我有同樣的錯誤在我的Ubuntu 13.10機器直接從apachefriends下載最新的XAMPP。 試試這個:

查找mysqld的創建程序連接到插座:

[email protected] /opt$ find . -name mysql.sock 
/opt/lampp/var/mysql/mysql.sock 

它添加到您的CakePHP的數據庫配置文件(CakePHP的)/app/Config/database.php

'unix_socket' => '/opt/lampp/var/mysql/mysql.sock' 

對我來說,這最終導致我的蛋糕命令能夠在沒有「錯誤:數據庫連接」Mysql「缺失或無法創建的情況下執行」「。

1

在apache開始,如果你得到一個警告,說apache沒有解決主機名的問題,使用127.0.1.1 ..這可能會導致後來與cakephp問題。 解決方案:sudo的納米/etc/apache2/apache2.config,添加一行: 服務器名本地主機

0

對於我來說竟然是服務器變量$ _ SERVER [「HTTP_HOST」]是不是在數據庫中。 PHP的配置文件,所以我的具體配置沒有在Shell中運行時正確設置。

$ _SERVER ['HTTP_HOST']在Shell執行期間不可用。

相關問題