PDO_SQLITE的一个bug

PDO_SQLITE的一个bug · Oct 21, 2013 clicks

吐槽1】namespace真没那么好,不能想其他语言那样,直接use或者import了就行,还是得include/require或者autoload。

代码重构之后,在mysql上运行没有问题,但是要支持sqlite就得做番大改了,mysql中的“`”,在sqlite中得换成单引号“'”, mysql中许多函数在这里也不能用了。。。。

但是,最大的问题是——PDO_SQLITE直接就报错,不管我怎么写dsn。

之前的VPS到期了,现在换了个128M RAM的,内存有点小,所以就考虑把mysql换成sqlite,本身这个网站也不存在并发问题,sqlite其实更合适。不过实际操作中,却调进了一个大坑。唉,开始怀念起MySQL的各种省心省事了。

首先,趁这改数据库的契机,把代码重构了一下,全面使用namespace。

【吐槽1】namespace真没那么好,不能想其他语言那样,直接use或者import了就行,还是得include/require或者autoload。

代码重构之后,在mysql上运行没有问题,但是要支持sqlite就得做番大改了,mysql中的“`”,在sqlite中得换成单引号“'”, mysql中许多函数在这里也不能用了。。。。

但是,最大的问题是——PDO_SQLITE直接就报错,不管我怎么写dsn。

==========================

然后,在我写这文章的时候,PDO_SQLITE又完全正常了。。。。。angry

 

================================================

再然后,发现在windows下与linux下,dsn的写法还不一样

windows下得这样:

$pdo = new PDO('sqlite:dbdir\\data\\sqlite.db');

而在linux下,要这样写:

$pdo = new PDO('sqlite:db=dbdir/data/sqlite.db');