CakePHP SQLSTATE[HY000][14] 错误

CakePHP SQLSTATE[HY000][14] error

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

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

里面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,
    ],
],

错误

Error: [PDOException] SQLSTATE[HY000] [14] unable to open database file
Request URL: /mycontroller/
Stack Trace:
#0 /var/www/vhosts/example.com/httpdocs/vendor/cakephp/cakephp/src/Database/Driver/PDODriverTrait.php(48): PDO->__construct('sqlite:/var/www...', NULL, NULL, Array)
#1 /var/www/vhosts/example.com/httpdocs/vendor/cakephp/cakephp/src/Database/Driver/Sqlite.php(61): Cake\Database\Driver\Sqlite->_connect('sqlite:/var/www...', Array)
#2 /var/www/vhosts/example.com/httpdocs/vendor/cakephp/cakephp/src/Database/Schema/BaseSchema.php(46): Cake\Database\Driver\Sqlite->connect()
#3 /var/www/vhosts/example.com/httpdocs/vendor/cakephp/cakephp/src/Database/Dialect/SqliteDialectTrait.php(169): Cake\Database\Schema\BaseSchema->__construct(Object(Cake\Database\Driver\Sqlite))
#4 /var/www/vhosts/example.com/httpdocs/vendor/cakephp/cakephp/src/Database/Schema/Collection.php(52): Cake\Database\Driver\Sqlite->schemaDialect()
#5 /var/www/vhosts/example.com/httpdocs/vendor/cakephp/cakephp/src/Database/Schema/CachedCollection.php(44): Cake\Database\Schema\Collection->__construct(Object(Cake\Database\Connection))
#6 /var/www/vhosts/example.com/httpdocs/vendor/cakephp/cakephp/src/Database/Connection.php(319): Cake\Database\Schema\CachedCollection->__construct(Object(Cake\Database\Connection), true)
#7 /var/www/vhosts/example.com/httpdocs/vendor/cakephp/debug_kit/src/Model/Table/LazyTableTrait.php(40): Cake\Database\Connection->schemaCollection()
#8 /var/www/vhosts/example.com/httpdocs/vendor/cakephp/debug_kit/src/Model/Table/RequestsTable.php(43): DebugKit\Model\Table\RequestsTable->ensureTables(Array)
#9 /var/www/vhosts/example.com/httpdocs/vendor/cakephp/cakephp/src/ORM/Table.php(285): DebugKit\Model\Table\RequestsTable->initialize(Array)
#10 /var/www/vhosts/example.com/httpdocs/vendor/cakephp/cakephp/src/ORM/TableRegistry.php(196): Cake\ORM\Table->__construct(Array)
#11 /var/www/vhosts/example.com/httpdocs/vendor/cakephp/debug_kit/src/Routing/Filter/DebugBarFilter.php(186): Cake\ORM\TableRegistry::get('DebugKit.Reques...')
#12 /var/www/vhosts/example.com/httpdocs/vendor/cakephp/cakephp/src/Event/EventManager.php(389): DebugKit\Routing\Filter\DebugBarFilter->afterDispatch(Object(Cake\Event\Event), Object(Cake\Network\Request), Object(Cake\Network\Response))
#13 /var/www/vhosts/example.com/httpdocs/vendor/cakephp/cakephp/src/Event/EventManager.php(355): Cake\Event\EventManager->_callListener(Array, Object(Cake\Event\Event))
#14 /var/www/vhosts/example.com/httpdocs/vendor/cakephp/cakephp/src/Event/EventManagerTrait.php(78): Cake\Event\EventManager->dispatch(Object(Cake\Event\Event))
#15 /var/www/vhosts/example.com/httpdocs/vendor/cakephp/cakephp/src/Routing/Dispatcher.php(92): Cake\Routing\Dispatcher->dispatchEvent('Dispatcher.afte...', Array)
#16 /var/www/vhosts/example.com/httpdocs/webroot/index.php(37): Cake\Routing\Dispatcher->dispatch(Object(Cake\Network\Request), Object(Cake\Network\Response))
#17 {main}

如果您仔细观察堆栈跟踪,您会发现这并非源于您的应用程序连接,而是源于 DebugKit 插件,该插件默认使用 SQLite 来存储面板和请求详细信息,以及大多数可能目标 directory/file 不可写。

Cookbook > DebugKit

[...]

DebugKit Storage

By default, DebugKit uses a small SQLite database in your application’s /tmp directory to store the panel data. If you’d like DebugKit to store its data elsewhere, you should define a debug_kit connection.

Database Configuration

By default DebugKit will store panel data into a SQLite database in your application’s tmp directory. If you cannot install pdo_sqlite, you can configure DebugKit to use a different database by defining a debug_kit connection in your config/app.php file.

[...]