Laravel sqlite说数据库加密或不是数据库"

时间:2014-09-18 11:26:54

标签: php database sqlite laravel-4

我的计算机上有一个名为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不能读取它?

1 个答案:

答案 0 :(得分:1)

问题是sqlite的版本不同。 Laravel使用sqlite3,你的控制台上的sqlite命令可能是早期版本。从命令行运行sqlite -version以检查您的版本 - 可能是2件事。您需要安装sqlite3,并且您发现它不兼容 - 即sqlite3 testing.sqlite将产生您从laravel获得的相同错误。

因此,升级命令行sqlite版本,并将数据复制到新的sqlite3数据库中,laravel将正常运行。