我正在使用Rails 5.2.2和SQLCipher版本3.2.0(基于SQLite 3.8.6)。
我已经使用sqlcipher加密了SQLite数据库,但无法加载Rails应用程序。得到的消息如下:
SQLite3 :: NotADatabaseException:文件已加密或不是数据库:SELECT name FROM sqlite_master WHERE name <>'sqlite_sequence'AND name ='schema_migrations'并输入IN('table')
我认为我的问题在于更新文件config / database.yml并指定密码。我尝试指定密码,密钥等选项,但没有成功。
我想知道是否可以在rails中使用加密的SQLite数据库?
答案 0 :(得分:1)
这与所使用的Ruby版本无关,而与是否存在要使用的数据库适配器有关。
Rails尝试以相同的方式与所有数据库通信,每种数据库技术都需要提供adapter
才能将Rails要求的内容转换为该数据库技术所需的命令,以完成Rails的要求。 / p>
此配置在config / database.yml文件中完成,该文件可能类似于以下内容(注意适配器节):
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000
有许多可用的数据库适配器,包括SQLite,但我没有看到SQLCipher的任何适配器,您的运气搜索可能比我好。
据我所见,大多数Rails应用程序不会加密整个数据库,但是会加密某些列,例如存储某些加密版本的密码或访问令牌。