【问题标题】:No such function: sqlcipher_export()没有这样的功能:sqlcipher_export()
【发布时间】:2013-12-31 05:55:51
【问题描述】:

我使用启动终端

-macbook:sqlTest user1$ sqlite3 sqlTest.sqlite
SQLite version 3.7.13 2012-07-17 17:46:21
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> ATTACH DATABASE 'encrypted.sqlite' AS encrypted KEY 'testkey';
sqlite> SELECT sqlcipher_export('encrypted');
Error: no such function: sqlcipher_export
sqlite>

是什么导致没有这样的功能:sqlcipher_export?

【问题讨论】:

    标签: sqlite sqlcipher


    【解决方案1】:

    正如邮件列表中的回答:

    第一步是构建 sqlcipher 命令行工具,如下所述:

    http://sqlcipher.net/introduction/

    完成此操作后,您应该像这样运行命令:

    $ ./sqlcipher sqlTest.sqlite
    

    或

    $ /full/path/to/sqlcipher/sqlcipher sqlTest.sqlite
    

    在 unix 系统上,如果您没有为命令提供显式路径,系统将在 $PATH 中查找程序。在 OSX 上,系统附带一个 sqlite3 命令,因此您可能一直在使用它而不是使用 SQLCipher 编译的版本。请让我们知道这是否可以解决问题。谢谢!

    【讨论】:

    • 感谢您的帮助,sqlTest.sqlite 大小为 1 MB,包含 4 个表。 ./sqlcipher plaintext.sqlite QLCipher 版本 3.8.0.2 2013-09-03 17:11:13 输入“.help”获取说明 输入以“;”结尾的 SQL 语句sqlite> ATTACH DATABASE 'encrypted.sqlite' AS 加密密钥 'testkey'; sqlite> SELECT sqlcipher_export('加密'); sqlite> DETACH DATABASE 加密;执行上述命令后,plaintext.sqlite 文件大小变为零字节,encrypted.sqlite 文件大小为 1 KB。解密为纯文本后,plaintext.sqlite 大小为零字节。包含表丢失。
    • 正如尼克在邮件列表中所指出的:当您对附加的数据库执行 sqlcipher_export 命令时,它不会删除引用的数据库。此外,在下面的示例中,一旦您将纯文本数据库导出为加密形式,您将无法使用标准 sqlite3 命令行 shell 打开它,也无法访问 sqlcipher_export 便利功能。要验证您使用的是 SQLCipher 命令行 shell,请发出 PRAGMA cipher_version 并验证您是否在屏幕上打印了一个值。
    猜你喜欢
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多