如何在laravel 5.5中进行迁移?

时间:2018-01-15 21:24:59

标签: php mysql laravel-5 migration

我已经使用 laravel 5.5 创建了一个Auth项目并创建了新的迁移,当我迁移时收到此错误消息:

在Connection.php第647行:

SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists
(SQL: create table `users` (
      `id` int unsigned not null auto_increment primary key,
      `name` varchar(255) not null,
      `username` varchar(255) not null,
      `email` varchar(255) not null,
      `password` varchar(255) not null,
      `remember_token` varchar(100) null,
      `created_at` timestamp null,
      `updated_at` timestamp null,
      `role` int not null
      ) default character set utf8mb4 collate utf8mb4_unicode_ci
)

在Connection.php第449行:

SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists

我尝试php artisan migrate --force和php artisan migrate:rollback

并尝试删除所有表格并再次迁移它仍然存在此错误

4 个答案:

答案 0 :(得分:0)

听起来您使用的数据库已经有users表,但没有migration表。因此,当您运行迁移时,它会尝试再次创建users表。

您可以尝试两件事:

1)尝试在MySQL中设置一个新的(空)数据库,并更新.env文件中的设置以指向此新数据库。运行php artisan migrate,查看您的迁移是否已正确应用。

2)使用现有数据库,删除/删除所有表(如果要保留数据,请备份数据),然后运行php artisan migrate,看看是否能解决问题。

答案 1 :(得分:0)

了解问题并找到解决迁移工作原理所需的解决方案。迁移基于创建日期的方式工作。无论何时创建迁移,当前时间戳都附加到文件名。并且迁移根据该时间戳运行。 现在,LARAVEL创建两个名为2014_10_12_000000_create_users_table.php和2014_10_12_100000_create_password_resets_table.php的迁移。作为laravel规则,无论何时要运行迁移,这两个文件都将迁移,但用户表已经存在。删除这些文件,希望你的问题得到解决。 有一点,如果您使用模式和迁移在laravel中处理数据库,则不要手动删除数据库。它会给你带来不必要的问题。迁移表跟踪您运行的所有迁移,手动删除db将破坏在迁移表中保留数据的跟踪。所以下次运行模式时,laravel将无法理解最新情况并会产生错误。 希望对你有所帮助。

答案 2 :(得分:0)

您是否为表'用户'?创建了新的迁移?

在创建新项目时,默认情况下,Laravel将为users表生成迁移。这意味着如果您使用'用户'创建新迁移。表它会尝试两次创建表,从而导致错误。

您可以删除laravel创建的迁移,更改新表的名称或修改laravel迁移,而不是创建自己的。

答案 3 :(得分:0)

在CMD(DOS)中读取错误消息并检查laravel文档

长度错误我不知道是否有人看到此错误之前或之后,但当我编辑长度的工作时

我编辑3迁移如下: -

1 -1- Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('username')->unique(); $table->string('email')->unique(); $table->string('password'); $table->rememberToken(); $table->timestamps(); $table->integer('role'); });

现在它的

        Schema::create('users', function (Blueprint $table) {
        $table->increments('id')->autoIncrement();
        $table->string('name',200);
        $table->string('username',50)->unique();
        $table->string('email',100)->unique();
        $table->string('password',50);
        $table->string('role',50);
        $table->rememberToken();
        $table->timestamps();

    });

2号是

 Schema::create('password_resets', function (Blueprint $table) { $table->string('email')->index(); $table->string('token'); $table->timestamp('created_at')->nullable(); });

现在它: -

        Schema::create('passwordreset', function (Blueprint $table) {
        $table->string('email',200)->index();
        $table->string('token',200);
        $table->timestamp('created_at')->nullable();
    });
第3个是: -

3- Schema::create('tweets', function (Blueprint $table) { $table->increments('id'); $table->integer('user_id')->unsigned()->index(); $table->text('text'); $table->timestamps(); });

现在: -

        Schema::create('tweets', function (Blueprint $table) {
        $table->increments('id')->autoIncrement();
        $table->string('user_id',50)->index();
        $table->string('twetts',255);
        $table->timestamps();
    });