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。
代码重构之后,在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又完全正常了。。。。。
================================================
再然后,发现在windows下与linux下,dsn的写法还不一样
windows下得这样:
$pdo = new PDO('sqlite:dbdir\\data\\sqlite.db');
而在linux下,要这样写:
$pdo = new PDO('sqlite:db=dbdir/data/sqlite.db');