gpt4 book ai didi

cakephp - CakePHP和SQLite: fatal error :在非对象上调用成员函数query()

转载 作者:行者123 更新时间:2023-12-03 18:40:35 25 4
gpt4 key购买 nike

我在CakePHP网站上按照教程进行操作,但是决定改用SQLite数据库。我制作了一个表,并将数据库文件放在其余站点文件所在的位置。

但是,当调用〜username / public_html / site / speakers /时,出现以下错误:

Fatal error: Call to a member function query() on a non-object in /home/username/public_html/site/cake/libs/model/datasources/dbo/dbo_sqlite3.php on line 133

SpeakersController的源代码:

<?php
class SpeakersController extends AppController {
var $name = 'Speakers';
var $helpers = array ('Html','Form');
function index(){
$this->set('speakers', $this->Speaker->find('all'));
}
}
?>

最佳答案

查看可用的core datasources,没有一个称为sqlite3。我怀疑database config正在提示CakePHP尝试加载此文件。请检查您是否已定义数据库连接,如下所示:

var $default = array(
'driver' => 'sqlite', // not 'sqlite3'
'database' => '../database_name.sqlite', // db in /app directory
);




好的,这是(现在)我对情况的理解:


对于SQLite 2.x,PHP使用PHP的 SQLite database extension提供的 sqlite_xxx()函数。核心CakePHP sqlite数据源当前支持此功能。 (注意:查看下面的评论,似乎您当前尚未启用此PHP扩展。)
对于SQLite 3.x,PHP使用PHP的 SQLite3 database extension提供的 SQLite3()类。当前的核心CakePHP sqlite数据源和社区提供的 sqlite3数据源均不支持此功能。
但是,社区提供的 sqlite3数据源使用PHP的新版 PDO extensionSQLite PDO driver提供的 PDO()类。


因此,尽管CakePHP不支持它,但您似乎要使用 sqlite3驱动程序,以避免使用不受支持的SQLite版本。 :)

无论如何,您链接到的 ticket in Trac的最后一个注释已经说明了问题出现错误的原因。此票证此后为 migrated over to Lighthouse,并标记为 wont-fix

但是,该数据源已进入GitHub上的社区 Datasources plugin中,但在很大程度上看起来是 untested,而 commit history似乎并不表明问题已得到解决。

无论如何,我都会下载最新版本的数据源,但是您的问题似乎确实存在,因为 new PDO()调用(现在是 line 167)没有返回 PDO对象,因为它无法连接到数据库。

希望这应该为您调试问题提供一个起点。尝试撒上 debug($this->config); debug($this->connection);来检查出了什么问题。

关于cakephp - CakePHP和SQLite: fatal error :在非对象上调用成员函数query(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4779007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com