繁体   English   中英

如何在laravel 5.5中进行迁移?

[英]How can I do a migration in laravel 5.5?

我使用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 migration --force和php artisan migration:rollback

并尝试删除所有表格并再次迁移,仍然会遇到此错误

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

您可以尝试两种方法:

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

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

要了解问题并找到解决方案,您需要了解迁移的工作原理。 迁移以创建日期为基础。 每当创建迁移时,当前时间戳都会附加到文件名之后。 迁移将根据该时间戳进行。 LARAVEL现在创建两个迁移,分别名为2014_10_12_000000_create_users_table.php和2014_10_12_100000_create_password_resets_table.php。 作为laravel的规则,无论何时您要进行迁移,这两个文件都将进行迁移,但是users表已经存在。 删除这些文件,并希望您的问题得到解决。 一件事,如果您正在使用架构处理laravel中的databse,并且迁移永远不要手动删除db。 它将导致您不必要的问题。 迁移表会跟踪您运行的所有迁移,手动删除db会破坏将数据保留在迁移表中的那条轨迹。 因此,下次您运行架构时,laravel将无法理解正在发生的事情并会产生错误。 希望对您有帮助。

您是否为表“用户”创建了新迁移?

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

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

在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();
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM