【问题标题】:Laravel Nothing to MigrateLaravel 无需迁移
【发布时间】:2020-12-13 20:10:27
【问题描述】:

我使用命令 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
  • 作曲家 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. 使用 composer 下载 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"之类的文件名完全指定路径,则可以运行迁移

【问题讨论】:

  • 你的迁移已经在那里了吗?
  • 迁移表中有条目吗?
  • 你没有重命名迁移类名和文件名吧?
  • @NaveedAli 是的,所有迁移文件都存在于目录database/migration
  • @diliphirapara 我的迁移没有数据,只创建表和它的列

标签: php laravel laravel-5.8 laravel-7


【解决方案1】:

我偶然发现了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 Version 1909 Build 18363.1082
  • 我还尝试像 F:\Indra\Kerja\my-project-test 那样在我的项目目录中添加连字符“-”,并希望迁移无法正常工作,但迁移工作没有问题

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我尝试将它放在registerboot 方法中,但它不起作用
    猜你喜欢
    • 2015-07-17
    • 2021-02-21
    • 2019-04-17
    • 2020-07-11
    • 2016-04-12
    • 2018-08-01
    • 2021-12-23
    • 2019-11-06
    • 2018-11-21
    相关资源
    最近更新 更多