当我尝试在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
。
有没有人遇到过这个/知道如何通过它?
答案 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 文件是否为空并且没有缩进(没有空格)