Laravel没什么可迁移的

问题描述

我使用命令PHP artisan make:migration migration_namePHP artisan make:model ModelName -mcr在Laravel项目上创建了迁移。

当我运行PHP artisan migrate时,输出nothing to migrate

我检查我的数据库,只有migration表没有行,甚至没有创建来自Laravel的user表。

此问题在我的笔记本电脑和PC上发生

这是我用来使用XAMPP运行Laravel的环境

  • Laravel 7.24和Laravel 5.8.38
  • Apache / 2.4.39(Win64)
  • PHP 7.3.7
  • MariaDB 10.3.16
  • Composer 1.10.10

这是迁移代码

<?PHP

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

//File name = 2020_08_11_064146_create_category_table.PHP
//File Path = database/migrations

class CreateCategoryTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('category',function (Blueprint $table) {
            $table->id();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('category');
    }
}

我已经尝试过这些,但是没有发现运气:

  1. 运行composer dump-autoload
  2. 运行PHP artisan migrate:reset->无需回滚
  3. 运行PHP artisan migrate:fresh->成功删除所有表,迁移表成功创建,无任何迁移
  4. 运行PHP artisan migrate --path="/database/migrations/"->无需迁移
  5. 运行PHP artisan migrate:status->找不到迁移
  6. 运行PHP artisan migrate:install->迁移表创建成功,但没有解决问题

TLDR

我的意思是:

  1. 使用作曲家下载Laravel
  2. 编辑.env以使用用户root连接到数据库
  3. 使用PHP artisan make:migration create_table_category创建迁移
  4. 运行PHP artisan migrate
  5. 结果= Migration table create successfully,nothing to migrate数据库只有表migrations,没有行

编辑

如果我用文件PHP artisan migrate --path="database/migrations/2020_08_11_064146_create_category_table.PHP"完全指定路径,则可以运行迁移

解决方法

对于这种情况,此答案不是最佳解决方案,但是您可以尝试在AppServiceProvider中定义迁移路径:

/**
 * Register Custom Migration Paths
 */
$this->loadMigrationsFrom([
    database_path().DIRECTORY_SEPARATOR.'migrations'
]);/
,

我偶然发现this post,它描述了由项目路径引起的带有字符连字符'-'的问题

我的项目没有这些字符,但是有'奇怪'的字符,即开括号和方括号'[]',所以我想更改它。

我的根项目目录路径为F:\Indra\Kerja\[1] Personal\Personal profile\web,所以我的迁移路径为F:\Indra\Kerja\[1] Personal\Personal profile\web\database\migrations

请注意,有一个名为[1] Personal的文件夹,这是罪魁祸首

我已将文件夹重命名为Personal,并确保迁移正常进行。

我很好奇,所以尝试使用不同的文件夹名称,得到的结果很有趣:

  • [asdasd]Personal-> 由于某种原因迁移不起作用
  • [1 Personal->迁移工作
  • ]1Personal->迁移工作
  • ][1 Personal->迁移工作
  • []Personal->迁移工作

所以我必须更改我的文件夹名称

重要提示

  • 我的操作系统是Windows 10 Pro版本1909 Build 18363.1082
  • 我还试图像这样F:\Indra\Kerja\my-project-test一样在项目目录中添加连字符'-',并希望迁移不会成功,但是迁移不会出现问题