Laravel php工匠迁移不起作用

时间:2015-09-21 11:12:26

标签: php sqlite laravel migrate artisan

当我尝试在Laravel中使用'php artisan migrate'时,我遇到了2个错误:

  

[Illuminate \ Database \ QueryException] SQLSTATE [HY000]:一般错误:26文件已加密或不是数据库(SQL:select * from sqlite_master其中type ='table'和name = migrations)

     

[PDOException] SQLSTATE [HY000]:一般错误:26个文件已加密或不是数据库

我在尝试迁移之前创建了一个storage / database.sqlite文件。我还编辑了config / database.php,制作了default=sqlite。我正在使用Windows并安装了sqlite3

有没有人遇到过这个/知道如何通过它?

5 个答案:

答案 0 :(得分:6)

我有相同的结果,在我的情况下,/database/database.sqlite文件不是空的。

我删除了内容 php artisan migrate已成功创建迁移表。

答案 1 :(得分:0)

在Powershell控制台下的Windows中运行Laravel,我得到了与原始海报相同的错误。使用 touch database / database.sqlite ... 之类的命令创建新的SQLite数据库后,文档将显示为。与touch的Powershell等效的通常为 Out-File FILENAME

PS D:\Learning\PHP-Laravel\database> out-file database.sqlite
PS D:\Learning\PHP-Laravel> php artisan migrate
   Illuminate\Database\QueryException  : SQLSTATE[HY000]: General error: 26 file is not a database...

在创建我的 database.sqlite 文件时,出现了这些错误。我删除了数据库,并使用 New-Item 命令重新创建了数据库,

new-item -ItemType File -Name database.sqlite
PS D:\Learning\PHP-Laravel> php artisan migrate
Migration table created successfully.

答案 2 :(得分:0)

检查以 .sqlite 格式创建的文件,如果没有则确保为空,然后将其清空

database/db.sqlite 

然后运行迁移

答案 3 :(得分:0)

如果有人在sqlite db中手动创建表时遇到相同的错误-可能是sqlite版本不匹配。我通过清空数据库文件并使用getConnection()-> statement('CREATE TABLE

答案 4 :(得分:0)

检查您的 .sqlite 文件是否为空并且没有缩进(没有空格)