拉拉维尔(Laravel)的 PHP artisan migrate 命令无法运行

8
当我在Laravel中尝试使用'php artisan migrate'时,我遇到了两个错误:
[Illuminate\Database\QueryException] SQLSTATE [HY000]:一般错误:26文件已加密或不是数据库(SQL:select * from sqlite_master where type ='table' and name = migrations)
[PDOException] SQLSTATE [HY000]:一般错误:26文件已加密或不是数据库
在尝试迁移之前,我创建了一个storage/database.sqlite文件。我还编辑了config/database.php,将default=sqlite。我正在使用Windows,并安装了sqlite3。
有人遇到过这个问题/知道如何解决吗?

有人能帮忙解决这个问题吗?这是一个巨大的障碍。 - S. Hantz
5个回答

10

我也遇到了相同的问题,在我的情况下,/database/database.sqlite 文件不是空的。

我删除了其中的内容,并重新运行了 php artisan migrate 命令,迁移表格被成功创建了。


1
太棒了!很高兴你找到了解决方法。我刚刚放弃了sqlite,回到了mysql。 - S. Hantz
1
我在SQLite文件中有一个新行,删除后它就可以工作了,谢谢。 - Maz I

1
在Windows操作系统下使用PowerShell控制台运行Laravel时,我遇到了与原帖作者相同的错误。文档中提到“使用命令创建新的SQLite数据库,例如 touch database/database.sqlite...”,而在Powershell中,等价于touch的命令通常是Out-File FILENAME。保留html标签。
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.

1
检查您创建的文件,确保其为.sqlite格式,并且如果不是空的,请将其清空。
database/db.sqlite 

然后运行迁移。

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

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

1
这更像是一条注释。 - DanielM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接