为啥我无法从 fireac 打开我的 sqlite 数据库?
Posted
技术标签:
【中文标题】为啥我无法从 fireac 打开我的 sqlite 数据库?【英文标题】:why I can not open my sqlite database from firedac?为什么我无法从 fireac 打开我的 sqlite 数据库? 【发布时间】:2018-04-30 22:42:57 【问题描述】:我可以使用 sqlite maestro 应用程序打开我的加密 sqlite 数据库,但我无法使用 fiedac 我收到此错误
[FireDAC][Phys][SQLite] 错误:密码:指定的密码无效 或数据库已损坏
这是我的数据模块单元:
object DM: TDM
OldCreateOrder = False
Height = 306
Width = 468
object FDConnection1: TFDConnection
Params.Strings = (
'Database=C:\myapps\mydb.db'
'Password=mypass'
'DriverID=SQLite')
LoginPrompt = False
Left = 48
Top = 16
end
我将加密密钥写为密码,但是当我没有输入任何密码时出现错误:
[FireDAC][Phys][SQLite] 错误:文件已加密或不是数据库。
有什么问题?
【问题讨论】:
您错过了告诉 FireDAC 您使用哪种加密。使用<encryption>:<password>
格式,例如aes-256:MyPassword
用于 Password
连接参数。为此请咨询connection definition parameters。我不能给你一个直接的答案,因为你没有提到你实际使用的加密。
@Victoria 我这样做时密码无效
那么,您使用的密码无效。但是您必须使用该格式(除非您使用 AES-256),这是我确定的。如果您告诉我们您遵循的确切步骤,我可以在几个小时内尝试在 VM 上使用 SQLite Maestro 试用进行模拟(因为我住的地方是凌晨 1 点 :)
@Victoria 这是我在 sqlite maestro 中使用的正确密码。我只删除了fdconnection
组件,右键单击并设置上面的参数:数据库名称,密码和驱动程序...慢慢来,我们在同一时区顺便说一句...谢谢
【参考方案1】:
发现问题。根据the documentation:
加密的数据库格式与其他类似的不兼容 SQLite 加密扩展。这意味着您不能使用 加密数据库,使用非 FireDAC 库加密。如果你需要 为此,您必须使用原始工具解密数据库 并使用 FireDAC 对其进行加密。
我无法使用 SQLite Maestro(不同的库)加密并在 FireDAC 中打开它,所以我必须解密它然后使用 FireDAC 加密数据库。我使用了 Delphi 附带的加密示例,现在我可以使用 FireDAC 打开它。
【讨论】:
希望你不会因为我的编辑而用你的新朋克头盔征服我的寺庙 :) 这是正确的答案!请不要忘记接受它.. @Victoria 哈哈,我和你一样是一名士兵。肯定会选择答案,只是在我可以这样做之前有 2 天的强制期限。非常感谢维多利亚,你总是帮助我。 啊,有一些答题接受期。忘记那件事了。对不起。我很高兴我在某个时候有用;不过这次不是:) 你当然做到了。你启发了我去研究文档,你还编辑了我糟糕的写作:) @Victoria plz 用你的 twitter、linkedin 等更新你的个人资料...我想关注你。以上是关于为啥我无法从 fireac 打开我的 sqlite 数据库?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我无法打开/读取从 Python 调用的 C 扩展名中的 txt 文件?