我的计算机上有一个名为testing.sqlite的数据库文件,其中包含我想用于测试的数据库副本(而不是连接到我的普通MySQL生产服务器)。
我按照指示在laravel中的config / database文件中创建了一个条目,将其设置为访问sqlite文件,一切正常。但是,当我尝试并实际执行任何操作时,我收到错误消息:
[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 26 file is encrypted or is not a database (SQL: select * from sqlite_master where type = 'table' and name = vendor_alerts)
我可以从命令行使用sqlite testing.sqlite
访问该文件,为什么laravel不能读取它?
答案 0 :(得分:1)
问题是sqlite的版本不同。 Laravel使用sqlite3,你的控制台上的sqlite命令可能是早期版本。从命令行运行sqlite -version
以检查您的版本 - 可能是2件事。您需要安装sqlite3,并且您发现它不兼容 - 即sqlite3 testing.sqlite
将产生您从laravel获得的相同错误。
因此,升级命令行sqlite版本,并将数据复制到新的sqlite3数据库中,laravel将正常运行。