我使用的是Manjaro Linux KDE,大部分时间使用GUI软件包管理器来安装软件。我安装了SQLite 3.39.2-2和SQLite Tcl扩展。ICU 71.1-1(International Components for Unicode)是作为其他软件的依赖项安装的。
是否可以像现在这样在这些包的Tcl脚本中运行SQLite,或者必须使用SQLITE_ENABLE_ICU标志编译SQLite?
看起来必须打开enable_load_extension方法,并且可以使用SQL函数load_extension。但是,这里有一些关于安全性和设置一些PRAGMA语句的警告。
如果可能的话,请您解释一下这样做的正确/安全方法?
- 谢谢-谢谢
1条答案
按热度按时间slmsl1lt1#
除非显式启用,否则ICU扩展不会包含在SQLite版本中。特别是,正式的库存二进制文件不包含ICU功能。ICU扩展实际上可以编译为可加载扩展。除了启用可加载扩展可能带来的安全问题之外,每次您需要ICU功能时,你必须考虑显式加载扩展。因为你可能需要编译扩展(没有正式的二进制文件),所以只重建整个库并在核心中包含ICU模块是有意义的。我有一个扩展的tutorial,用于在Windows上使用MSYS 2/MinGW工具链编译带有ICU的SQLite。虽然您可能需要调整脚本以在Linux上构建SQLite,但它可能会对您有所帮助。