当前位置:首页 > 数据库 > SQlite

linux – 为什么sqlite3无法在Amazon Elastic File System上运行?

当我尝试在EFS目录上使用sqlite3创建基础时,会导致错误:

$sqlite3 foo.db
SQLite版本3.7.17 2013-05-20 00:56:22
输入“.help”获取说明
输入以“;”结尾的SQL语句
源码&GT .log stderr
源码&GT CREATE TABLE foo(int bar);
错误:磁盘I / O错误

有问题的Sqlite3数据库应仅用于故事元数据,并且不经常更新.不需要并发访问.但是,如果创建数据库的进程终止,则需要在不同的主机上重新启动该进程,并继续执行先前实例退出的位置.

亚马逊声称EFS是一个“文件系统,可通过文件系统接口(使用标准操作系统文件I / O API)访问Amazon EC2实例,并支持完整文件系统访问语义(如强一致性和文件锁定) )“.因此,我认为它适合手头的任务.

/ etc / fstab中的挂载选项是:

eu-west-1a.fs-ID.efs.eu-west-1.amazonaws.com:/ /efs nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 0 0

我理解it is often generally discouraged to put databases on NFS.但是,我相信,鉴于亚马逊和SQLite使用的语言,开发人员将继续努力.

解决方法:

更新(2017年3月6日):

EFS现在支持NFS v4.1锁定升级和降级:

https://aws.amazon.com/about-aws/whats-new/2017/03/amazon-elastic-file-system-amazon-efs-now-supports-nfsv4-lock-upgrading-and-downgrading/

来自文档:

Lock upgrades and downgrades: Amazon EFS returns NFS4ERR_LOCK_NOTSUPP
if the client attempts to upgrade or downgrade an existing lock.

Note

Because lock upgrades and downgrades are not supported, use cases that
require this feature, such as those using SQLite or IPython, are also
not supported in Amazon EFS.

看到:

http://docs.aws.amazon.com/efs/latest/ug/efs-ug.pdf

并且:

http://docs.aws.amazon.com/efs/latest/ug/nfs4-unsupported-features.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!