user3419778
user3419778

Reputation: 866

Laravel Add new Table with migrate

I have created a Laravel project and I added few table with Migrate. It was working fine. The tables already had data. Now I require another table and I tried to add it with this command:

php artisan make:migration create_books_table

It is working and add files at \database\migrations.... I then added schema at up() function. But when I run the command,

php artisan migrate

It is not working , giving error Base table or view already exists.

Please help. I am very new to laravel. Thanks

Migration code..

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');
    }

}

Upvotes: 10

Views: 26100

Answers (4)

Nourhan Nohga
Nourhan Nohga

Reputation: 1

php artisan migrate:fresh

This command will drop your complete database and reinstall the tables in the migration folder.

Upvotes: 0

ameer nagvenkar
ameer nagvenkar

Reputation: 401

You need to delete the existing 'books' table in the database;

The table already exists so it wont get created again.

Or if you donot have too much data in the other tables run

php artisan migrate:fresh

This will roll back previous table migrations and re migrate them all

Upvotes: 1

mjmiri
mjmiri

Reputation: 41

create new folder in "database/migrations/" and use the "path" property on migrate , Once the table is migrated, you can move the migration file back to the usual folder.

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

Upvotes: 4

cre8
cre8

Reputation: 13562

Laravel has an own table called migration. It's used to save information about when a table was created so artisan can rollback to another point. If you delete a table manually the entry in the migration table is still there. If you remove all tables in your database and migrate again it should work.

Upvotes: 3

Related Questions