【问题标题】:Yii CDbConnection failed to open the DB connection: could not find driver with google cloud sqlYii CDbConnection 无法打开数据库连接:无法使用谷歌云 sql 找到驱动程序
【发布时间】:2014-08-24 15:40:06
【问题描述】:

我在使用 Yii 和在 Google Cloud sql 上运行的 mysql 数据库时遇到问题。

快速概览:

我们已将其从现有的服务器中移出,在该服务器上它完全没有问题,现在已经设置了一个带有 php 的 Google Compute Engine 服务器,所有相关驱动程序 mysql_pdo 都是其中之一。我们还有一个 Google Cloud SQL 数据库,用于存储我们现有的所有数据库信息。

我的尝试

我写了一个简单的 php 脚本,它使用 PDO('mysql:<IPADDRESS>;dbname=<MYDBNAME>,'MYUSERNAME','MYPASSWORD'); 这个连接非常好,可以读取表格和返回数据。

问题

一旦我在 config/main.php 中的 yii 中执行相同操作,它似乎不起作用并出现错误:CDbConnection 无法打开数据库连接:找不到驱动程序

这里是yii连接字符串

'db'=>array(
                    'connectionString' =>'mysql:host=my.server.ip.address;dbname=my_db_name',
                    'emulatePrepare' => true,
                    'username' => 'my_username',
                    'password' => 'my_passsword',
                    'charset' => 'utf8',
            ),

我还运行了 yii 需求脚本,它全部返回为传递给 mysql PDO 函数。

任何帮助将不胜感激。

谢谢,

【问题讨论】:

    标签: php mysql yii google-cloud-sql google-compute-engine


    【解决方案1】:

    啊哈回答我自己的问题:

    服务器需要有 sqlite PDO 扩展以及 MySQL PDO 扩展。现在一切正常!

    所以值得检查一下你的 phpinfo

    你可以根据这个答案添加:https://superuser.com/a/320914

    或通过您的 php.ini 取消注释以下内容:

    extension=php_pdo_sqlite.dll
    
    extension=php_sqlite.dll
    

    希望这对其他人有所帮助

    【讨论】:

    • 你使用 SQlite 还是 MySQL?
    • 我们使用 MySQL,不记得为什么需要 sqlite,我认为这与 yii 和数据库功能有关。
    • 对我来说,碰巧我还需要 sqlite(不仅是 mysql),因为缓存功能配置为使用 sqlite - 我最初忽略了这一点(并且浪费了太多时间来搜索为什么会出现此错误)。
    【解决方案2】:

    不确定这是否相关...我通过 CentOS 7 GCE 连接到 Cloud SQL 时遇到“权限被拒绝”问题。

    发现跟 SELinux 有关系,找到如下解决方案:Connect DATABASE Error TYPE: 2002: Permission denied

    基本上setsebool -P httpd_can_network_connect_db 1

    在不禁用 SELinux 的情况下解决了我的问题。

    希望对阅读本文的人有所帮助。

    【讨论】:

      猜你喜欢
      • 2014-05-22
      • 1970-01-01
      • 2015-03-23
      • 2016-12-07
      • 2014-06-06
      • 1970-01-01
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多