【问题标题】:Laravel Add new Table with migrateLaravel 使用迁移添加新表
【发布时间】:2015-09-22 12:22:26
【问题描述】:

我创建了一个 Laravel 项目,并使用 Migrate 添加了几个表。 它工作正常。这些表已经有数据。现在我需要另一个表,并尝试使用以下命令添加它:

php artisan make:migration create_books_table

它正在工作并在 \database\migrations.. 中添加文件。 然后我在 up() 函数中添加了模式。但是当我运行命令时,

php artisan migrate

它不工作,给出错误基表或视图已经存在。

请帮忙。我对 laravel 很陌生。谢谢

迁移代码..

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

class CreateBooksTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('books', function(Blueprint $table)
        {
            $table->increments('id');
            $table->string('name');
            $table->text('description');
            $table->timestamps();
        });
    }

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

}

【问题讨论】:

  • 你能分享你的迁移代码吗?
  • 您的数据库已经没有任何books 表或视图,对吧?看起来一切都很好..
  • 是的,没有书桌。但是还有一些其他的桌子。所以它给出了错误..

标签: php mysql laravel migration


【解决方案1】:

Laravel 有一个名为迁移的自己的表。它用于保存有关何时创建表的信息,以便工匠可以回滚到另一个点。如果您手动删除表,迁移表中的条目仍然存在。如果您删除数据库中的所有表并再次迁移,它应该可以工作。

【讨论】:

    【解决方案2】:

    在 "database/migrations/" 中创建新文件夹并使用 migrate 上的 "path" 属性,一旦表被迁移,您可以将迁移文件移回通常的文件夹。

    php artisan migrate --path=/database/migrations/new folder/ 
    

    【讨论】:

      【解决方案3】:

      您需要删除数据库中现有的'books'表;

      该表已经存在,因此不会再次创建。

      或者如果你在其他表中没有太多数据运行

      php artisan migrate:fresh
      

      这将回滚以前的表迁移并重新迁移它们

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-13
        • 2016-07-09
        • 2020-02-17
        • 2020-01-23
        • 2017-10-18
        • 1970-01-01
        • 2013-05-23
        • 2016-09-25
        相关资源
        最近更新 更多