【问题标题】:CakePHP bake Error: Database connection "Mysql" is missing, or could not be createdCakePHP bake 错误:数据库连接“Mysql”丢失,或无法创建
【发布时间】:2013-05-22 09:39:43
【问题描述】:

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

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

我尝试从我的应用程序目录运行 bake 命令(虽然我看到路径没问题),但我得到了同样的错误。 我将database.phplocalhost 更改为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

【问题讨论】:

  • 您是从 vagrant vm(通过 ssh)还是在主机上运行 CLI 控制台?
  • 在客户机上启用 PDO 时从主机运行(流浪盒)。也许我就是那么愚蠢,这就是为什么它不起作用?
  • 我遇到了这个问题,我正在主机上运行烘焙。如果您使用 Vagrant,请确保在 Vagrant 盒子上运行烘焙(ssh 到它然后烘焙)。
  • 这就是我最终要做的。应该有一种从主机烘烤的方法,但我还没有找到解决方案。当然 Laravel artisian 也是如此,我相信其他框架 CLI 工具。

标签: cakephp cakephp-2.0


【解决方案1】:

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

【讨论】:

  • 你能告诉我我是怎么做的吗?我记得 PDO 应该已经在 php.ini 上启用了 php 版本 5.3.x 但我可能在这里弄错了。
  • 似乎为 mysql vagrant@precise64 启用了 PDO:~$ php --ri pdo PDO PDO 支持 => 启用了 PDO 驱动程序 => mysql
  • 在 /opt/lampp/etc/php.ini 下取消注释 extension="pdo_mysql.so"
  • opt下没有lamp文件夹
  • 只需查找 php.ini 文件,然后取消注释 extension="pdo_mysql.so"
【解决方案2】:

只是为了帮助 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”丢失或无法创建。”的情况下执行。

【讨论】:

    【解决方案3】:

    在 apache 启动时,如果您收到一条警告,说明 apache 无法解析主机名,使用 127.0.1.1.. 这可能会导致稍后与 cakephp 出现问题。 解决方案: sudo nano /etc/apache2/apache2.config ,添加以下行: 服务器名称 localhost

    【讨论】:

      【解决方案4】:

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

      sudo apt-get install php5-mysql
      

      【讨论】:

      • 还要确保您已经创建了数据库。
      • 您的解决方案与问题伙伴并没有真正的关系,我已经直接使用来自服务器的命令“解决”了它,因为 Vagrant 端口转发无法像服务器上的 SQL 那样正常工作。
      【解决方案5】:

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

      $_SERVER['HTTP_HOST'] 在 Shell 执行期间不可用。

      【讨论】:

        猜你喜欢
        • 2014-08-02
        • 1970-01-01
        • 2013-10-17
        • 1970-01-01
        • 2014-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-21
        相关资源
        最近更新 更多