【问题标题】:Laravel php artisan migrate not workingLaravel php工匠迁移不起作用
【发布时间】:2015-12-18 01:35:53
【问题描述】:

当我尝试在 Laravel 中使用“php artisan migrate”时出现 2 个错误:

[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

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

【问题讨论】:

  • 有人可以帮忙吗?这是一个巨大的绊脚石

标签: php sqlite laravel migrate laravel-artisan


【解决方案1】:

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

我删除了内容重新运行 php artisan migrate,迁移表创建成功。

【讨论】:

  • 太棒了!很高兴你找到了解决方法。我刚刚放弃了 sqlite 并回到了 mysql
  • 我在 sqlite 文件中有一个新行,删除后可以正常工作,谢谢
【解决方案2】:

在 Powershell 控制台下的 Windows 中运行 Laravel 我遇到了与原始海报相同的错误。 在使用 touch database/database.sqlite... 等命令创建新的 SQLite 数据库后,文档中显示 Touch 的 Powershell 等价物通常是 Out-File文件名

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.

【讨论】:

    【解决方案3】:

    检查你作为 .sqlite 制作的文件,如果不是,请确保它为空,然后将其设为空

    database/db.sqlite 
    

    然后运行迁移

    【讨论】:

      【解决方案4】:

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

      重新创建表解决了同样的错误

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 这更像是一条评论
        猜你喜欢
        • 2021-02-21
        • 2018-09-24
        • 2018-09-26
        • 1970-01-01
        • 2016-04-16
        • 2013-02-05
        • 1970-01-01
        • 2018-12-02
        • 1970-01-01
        相关资源
        最近更新 更多