CakePHP烘焙错误:数据库连接“;Mysql“;缺少,或无法创建

CakePHP烘焙错误:数据库连接“;Mysql“;缺少,或无法创建,cakephp,cakephp-2.0,Cakephp,Cakephp 2.0,我已经检查了关于我的问题的其他问题和答案,似乎没有什么能帮助解决它 我正在使用安装了lamp的vagrant percise64(ubuntu服务器12.04)。 在我的主机(桌面)上,我有一个myfinalproject目录,其中包含解压的cakePHP版本2.3.5。 我已经设置了所有需要的cakePHP,在cakePHP的生成页面上显示“Cake能够连接到数据库” 当我尝试烘焙新的模型/控制器或所有对象时,会出现以下错误: Welcome to CakePHP v2.3.5 Console

我已经检查了关于我的问题的其他问题和答案,似乎没有什么能帮助解决它

我正在使用安装了lamp的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}
我尝试从我的appdir运行bake命令(尽管我看到路径是正确的),但我得到了相同的错误。 我已将
数据库.php
localhost
更改为
127.0.0.1
,仍然发生相同的错误

我错过了什么

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


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

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

sudo apt-get install php5-mysql

只是为了帮助Ubuntu用户走出困境: 我的Ubuntu13.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'

对我来说,这最终导致我的cake命令能够在没有“错误:数据库连接“Mysql”丢失或无法创建”的情况下执行。

在apache start上,如果您收到一条警告,说明apache没有解析主机名,请使用127.0.1.1。。这可能会导致以后cakephp出现问题。 解决方案:sudo nano/etc/apache2/apache2.config,添加以下行:
ServerName localhost

对我来说,结果是database.php配置文件中没有服务器变量$\u server['HTTP\u HOST'],因此在Shell中运行时没有正确设置我的特定配置


$\u服务器['HTTP\u HOST']在Shell执行期间不可用。

您能告诉我如何执行吗?我记得,在php版本5.3.x的php.ini上应该已经启用了PDO,但我可能在这里弄错了。看起来PDO是为mysql启用的vagrant@precise64:~$php--ri-pdo-pdo-pdo-support=>启用的pdo驱动程序=>mysqluncomment extension=“pdo_-mysql.so”在/opt/lampp/etc/php.ini下,我在opt下没有lamp文件夹,只需查找php.ini文件,然后取消注释extension=“pdo_mysql.so”您是从vagrant vm(通过ssh)还是在主机上运行CLI控制台?在主机上运行,而在来宾(vagrant box)上启用pdo。也许我有那么笨,这就是为什么它不工作?我有这个问题,我在主机上运行烘焙。如果您使用的是Vagrant,请确保在Vagrant框上运行bake(ssh到它,然后bake)。应该有一种从主机烘焙的方法,但我还没有找到解决方案。当然,Laravel artisian和我相信其他frameworks CLI工具也是如此。还要确保您已经创建了数据库。您的解决方案与问题无关,mate,我已经使用直接来自服务器的命令“解决”了它,因为Vagrant port forwarding与服务器上的SQL不一样。
'unix_socket' => '/opt/lampp/var/mysql/mysql.sock'