CakePHP SQLSTATE[HY000][14] error.日志含义


CakePHP SQLSTATE[HY000][14] error

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

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

Inside 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来存储面板和请求的详细信息,并且很可能目标目录/文件是不可写的。

Cookbook> DebugKit

[…]

DebugKit存储

默认情况下,DebugKit在应用程序的/tmp目录中使用一个小的SQLite数据库来存储面板数据。如果你想要DebugKit在其他地方存储它的数据,你应该定义一个debug_kit连接。

数据库配置

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

[…]