使用Laravel迁移添加新表

10

我创建了一个 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');
    }

}

请问您能分享您的迁移代码吗? - Ariful Haque
您的数据库里已经没有任何 books 表或视图了,是吗?看起来一切都很正常。 - Ariful Haque
是的,没有书桌。但是还有其他的桌子。所以它会出现错误。 - user3419778
3个回答

4

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

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

3

Laravel有一张称为migration的表。它用于保存关于创建表的时间信息,以便artisan可以回滚到另一个点。如果您手动删除一个表,则迁移表中的条目仍然存在。如果您删除数据库中的所有表并重新进行迁移,则应该可以正常工作。


1

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

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

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

php artisan migrate:fresh

这将会回滚之前的表迁移并重新迁移所有表。

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