CakePHP烘焙错误:数据库连接“Mysql”丢失或无法创建

时间:2013-05-22 09:39:43

标签: cakephp cakephp-2.0

我已经检查了有关我的问题的其他问题和答案,似乎没有任何帮助解决它。

我正在使用安装了灯泡的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}

我试过从我的app dir运行bake命令(虽然我看到路径没问题)但我得到了同样的错误。 我已将database.php localhost更改为127.0.0.1,但仍然发生同样的错误。

我在这里缺少什么?

编辑:由于人们建议我检查PDO扩展可用性,我做了一个很小的测试。 我用过:

vagrant@precise64:/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

5 个答案:

答案 0 :(得分:4)

您是否为cli启用了pdo模块?我认为你可以为cli / web(fpm)设置不同的php.ini。

答案 1 :(得分:3)

只是为了帮助 Ubuntu 用户: 我在我的ubuntu 13.10机器上遇到了同样的错误,最新的xampp是直接从apachefriends下载的。 试试这个:

找到mysqld为要连接的程序创建的套接字:

user@host /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“缺失,或者无法创建。”。

答案 2 :(得分:1)

在apache启动时,如果你收到一条警告,说明apache没有解析主机名,使用127.0.1.1 ..这可能会在以后的cakephp中引起问题。 解决方案:sudo nano /etc/apache2/apache2.config,添加行:     ServerName localhost

答案 3 :(得分:0)

尝试(重新)安装PHP MySQL支持

sudo apt-get install php5-mysql

答案 4 :(得分:0)

对我来说,结果是服务器变量$ _SERVER [' HTTP_HOST']在database.php配置文件中不可用,因此在Shell中运行时我的特定配置未正确设置

在Shell执行期间,

$ _ SERVER [' HTTP_HOST']不可用。