提高使用PDO连接SQLite时附加数据库数量的限制

5
我正在开发一个项目,每个表格使用一个数据库文件可以大大受益,主要是因为我正在尝试避免数据库过大,同时也因为文件锁定问题
我考虑使用ATTACH语句来创建一个带有所有表格的“虚拟”数据库,但我刚刚发现,尽管附加数据库的上限是62(这对我来说完全可以接受),但默认附加数据库的上限实际上是10,来自SQLite限制页面

最大附加数据库数

ATTACH语句是SQLite的扩展,允许将两个或多个数据库与同一数据库连接关联,并像单个数据库一样运行。同时附加的数据库数量限制为SQLITE_MAX_ATTACHED,默认设置为10。SQLite中的代码生成器使用位图来跟踪附加的数据库。这意味着附加的数据库数量不能超过62个。

由于我需要支持超过10个表格,我的问题是,如何从PHP(使用带有SQLite 3的PDO)将SQLITE_MAX_ATTACHED变量设置为更高的值?


1
看起来现在是开始使用数据库的绝佳时机。 - Your Common Sense
@YourCommonSense:你和你的智慧... - Alix Axel
@AlixAxel:你有考虑过切换到真正的数据库,比如PostgreSQL或MySQL吗? - mvp
1
@mvp:我没有这样做,因为我所尝试做的事情的整个重点都围绕着SQLite,我可以进一步说明,但我宁愿不这样做。毫不想显得苛刻,但这是一个需要客观答案的问题(即解决方案-也许使用PRAGMA或一些未记录的PHP/PDO函数,或者不是)而不是你认为我可能需要的东西。而SQLite是一个真正的(虽然无服务器)数据库。 - Alix Axel
@AlixAxel:我理解你的想法。别误会 - 我绝对喜欢SQLite,因为当它被正确使用时,它可以做很多事情,而且我同意它是真正的数据库。话虽如此,有时候你应该退一步重新评估你正在做什么 - 如果你愿意,可以打破常规思维。如果你真的遭受SQLite锁定问题的困扰,那么PostgreSQL完美地解决了这个问题。 - mvp
更新:最大附加数据库数量不能超过125。 - mOna
1个回答

3
这些限制是编译时选项。要更改它们,您必须重新编译PHP。

从您提供的页面来看,这句话并不完全准确:“编译时选项通常设置了一个硬性上限,可以使用sqlite3_limit()接口在运行时对单个数据库连接进行更改”。 - Alix Axel
2
Hard 上限” 意味着它只能在运行时被 降低 - CL.
1
确实,你说得对。我链接的另一页明确说明了这一点,我想可能是我没看到……你知道在我重新编译SQLite之后,那个选项是否会列在“PRAGMA compile_options;”中吗? - Alix Axel
1
这些限制虽然在编译时设置,但并不被视为编译选项。 - CL.
1
@CL.我已经在这里发布了问题:http://stackoverflow.com/questions/39365189/attach-unlimited-sqlite-databases-using-php - Elyor
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接