CakePHP SQLSTATE [HY000] [14]错误

时间:2015-07-11 18:32:27

标签: php database cakephp cakephp-3.0

我尝试将当前的CakePHP 2.x应用程序升级到3.x.

我修复了命名空间和文件夹结构问题。现在我有数据库问题。在我的测试服务器中,我创建了相同的MySQL数据库并授予用户访问权限。然后我更改了Regexp配置文件。但是当我尝试我的应用程序时,我得到以下错误。会出现什么问题?似乎Cakephp尝试使用Sqlite,但我使用MySQL?

内部config\app.php

config\app.php

错误

'Datasources' => [
    'default' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => 'localhost',
        /**
         * CakePHP will use the default DB port based on the driver selected
         * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
         * the following line and set the port accordingly
         */
        //'port' => 'nonstandard_port_number',
        'username' => 'myuser',
        'password' => 'mypass',
        'database' => 'mydatabase',
        'encoding' => 'utf8',
        'timezone' => 'UTC',
        'cacheMetadata' => true,

        /**
         * Set identifier quoting to true if you are using reserved words or
         * special characters in your table or column names. Enabling this
         * setting will result in queries built using the Query Builder having
         * identifiers quoted when creating SQL. It should be noted that this
         * decreases performance because each query needs to be traversed and
         * manipulated before being executed.
         */
        'quoteIdentifiers' => false,
    ],
],

1 个答案:

答案 0 :(得分:17)

如果你仔细观察堆栈跟踪,你会发现这不是来自你的应用程序连接,而是来自DebugKit插件,它默认使用SQLite存储面板和请求详细信息,而且很可能是目标目录/文件不可写。

<强> Cookbook > DebugKit

  

[...]

     

DebugKit Storage

     

默认情况下,DebugKit在应用程序的/tmp目录中使用一个小的SQLite数据库来存储面板数据。如果您希望DebugKit将其数据存储在其他位置,则应定义debug_kit连接。

     

数据库配置

     

默认情况下,DebugKit会将面板数据存储到应用程序tmp目录中的SQLite数据库中。如果无法安装pdo_sqlite,则可以通过在debug_kit文件中定义config/app.php连接来将DebugKit配置为使用其他数据库。

     

[...]