用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4014|回复: 5
收起左侧

关于CI 2.2.0中使用sqlite问题

[复制链接]
发表于 2014-7-15 14:10:33 | 显示全部楼层 |阅读模式
        因为项目关系需要使用sqlite数据库, 但是配置后测试报了这么一个错, 求解决Fatal error: Call to a member function rowCount() on a non-object in E:\shuai\CodeIgniter_2.2.0\system\database\drivers\pdo\pdo_result.php on line 43


1. 配置文件

2. 控制器中的代码



3. 错误提示




发表于 2014-7-19 10:30:13 | 显示全部楼层
我也遇到相同问题用的是mysql数据库,求解决  Fatal error: Call to a member function rowCount() on a non-object in D:\wamp\www\myproject\system\database\drivers\pdo\pdo_result.php on line 42
发表于 2014-7-20 22:26:06 | 显示全部楼层
sqlite数据分2,3两个版本。楼主这个貌似是3.
如果用3,需要在php.ini中配置扩展。此外,在配置路径时,一般用realpath函数直接指定sqlite数据库的位置,而不是用hostname。最后,链式AR如果报错,用db->query(sql)试试,看是否报错。
发表于 2015-3-12 12:04:27 | 显示全部楼层
spt119 发表于 2014-7-20 22:26
sqlite数据分2,3两个版本。楼主这个貌似是3.
如果用3,需要在php.ini中配置扩展。此外,在配置路径时,一 ...

能给个示例吗?
再有你提到的在php.ini中需要开启扩展,请问具体是什么扩展?
谢谢了!
发表于 2015-3-17 16:44:25 | 显示全部楼层
本帖最后由 TurboY 于 2015-3-17 16:46 编辑

这个问题我昨天看到一次了,再回复一次吧。
CodiIgniter 2.2的PDO驱动还很不成熟,不推荐使用。
这是CodeIgniter-2.2-stable这个版本的BUG。在pdo_drivers.php和pdo_result.php这两个文件里都调用了rowCount()方法,但事实上pdo_result.php里根本没有定义这个方法。不仅SQLite,OCI8等用CI2.2默认的数据库驱动操作都不行。
CI提供了sqlite驱动,但这个是SQLite2的。PHP5.3开始有php_sqlite3了,一定要用SQLite3的话,可以用我改写出的一个用于CI2.2的sqlite3数据库驱动。
下面是 CodeIgniter2.2的SQLite3数据库驱动,解压后放到 system/databases/drivers/ 下就可以用了,application/config/database.php 里只要写 “$db['sqlite3']['dbdriver'] = 'sqlite3';”就可以了。
附件见 前一个帖子 ,节约点空间。
发表于 2015-11-3 12:05:24 | 显示全部楼层
吧 2.1.4 的 pdo_driver.php覆盖过去就好了

本版积分规则