【发布时间】:2018-02-26 22:38:27
【问题描述】:
奇怪的情况。 Django 2.x 的 sqlite3 驱动器特性开启了 uri 支持。这似乎只是在 python 3 中看到的一个问题。在使用旧版本 sqlite 的机器上,在我的例子中是 3.6.20,不支持 URI 的问题不会出现在完全相同的 virtualenv 和代码库中。在带有 sqtlite3 --version 的机器上显示 3.7.17 它确实出现了。有趣的是,根据我的阅读,该功能仅在 3.7.7 之后的 sqlite3 中受支持。所以显然 django 认为它是受支持的,但它真的不在 python 中内部 sqlite3 驱动程序的级别? (猜测)
在[3]中:sqlite3.version_info 出[3]: (2, 6, 0)
在[4]中:sqlite3.sqlite_version_info 出[4]: (3, 7, 17)
在它不工作的机器上,正如预期的那样,最后一行是 (3, 6, 20) 在它工作的机器上。
现在我无法完全控制这台机器。我想只是把较低的版本拉过来,但那里没有运气。即使您在命令行上运行 sqlite3,内部库也会确定实际版本。
我可以破解 django 驱动程序设置的相关部分,但即使我确实控制了生产和登台 virtualenvs,这也令人不快。
更令人抓狂的是,我什至没有使用 django 的 ORM 功能,因为该项目以自制但非常有效的方式直接保存到 mongo。但是 django 坚持要求一些内部应用程序检查 ORM 数据库连接,默认为 sqlite。我想我可以为此放入一个 mysql 数据库,但这也不是很令人满意。
如果我无法重新安装 sqlite3,是否有 django 设置或 django clean 方式来处理我没有想到的问题,或者有干净的方式来处理这个问题?
【问题讨论】:
-
这会引发错误吗?如果是这样,请在问题中包含完整的异常消息和回溯。