Laravel 5.2 迁移第二个表时出现数据库迁移错误

Posted

技术标签:

【中文标题】Laravel 5.2 迁移第二个表时出现数据库迁移错误【英文标题】:Laravel 5.2 database migration error occurs when second table migrate 【发布时间】:2017-02-21 01:42:26 【问题描述】:

我正在使用 Laravel 5.2。我确实使用php artisan make:migration create_users_table 命令创建了迁移文件。文件创建成功,我确实使用此代码更新了文件:

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

class CreateUsersTable extends Migration

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    
        Schema::create('users', function (Blueprint $table) 
            $table->increments('id');
            $table->integer('partner_id');
            $table->string('social_id');
            $table->integer('device_id');
            $table->integer('gcm_id');
            $table->integer('user_role');
            $table->string('social_media');
            $table->string('display_name');
            $table->string('first_name');
            $table->string('last_name');
            $table->integer('status');
            $table->string('email')->unique();
            $table->string('password');
            $table->string('profile_pic');
            $table->string('gender');
            $table->float('height');
            $table->float('weight');
            $table->string('dob');
            $table->bigInteger('mobile');
            $table->string('city');
            $table->string('state');
            $table->integer('zip');
            $table->string('country');
            $table->float('latitude');
            $table->float('longitude');
            $table->float('gps_status');
            $table->string('favorite_movie');
            $table->string('favorite_food');
            $table->string('favorite_weather');
            $table->integer('login_status');
            $table->string('active');
            $table->string('token');
            $table->rememberToken();
            $table->timestamps();
        );
    

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    
        Schema::drop('users');
    
`

为了运行迁移,我使用这个“php artisan migrate”命令。并发生错误

'迁移表创建成功。

[Illuminate\Database\QueryException] SQLSTATE[HY000]:常规 错误:1025 重命名 '.\laravel\users' 时出错 '.\laravel#sql2-1d88-70' (errno: 190 - Operation not allowed when innodb_forced_recovery > 0) (SQL: alter table users add unique users_email_unique(email))

[PDOException] SQLSTATE[HY000]: 一般错误: 1025 Error on 将 '.\laravel\users' 重命名为 '.\laravel#sql2-1d88-70' (errno: 190 - innodb_forced_recovery > 0)'时不允许操作

之后我使用了回滚命令php artisan migrate:rollback,但消息显示没有回滚,当我想创建第二个表时,消息显示the user table already exist

【问题讨论】:

你试过php artisan migrate:fresh吗?看起来您的旧数据库仍然存在 【参考方案1】:

我认为回滚的问题在于,由于迁移没有正确完成,在 db 表中添加迁移的过程(作为最后一步)尚未触发,因此 artisan 命令无法恢复它.为了解决这个问题,我建议您从数据库中手动删除该表。

问题在于迁移本身,在我的脑海中,我不记得 Laravel 的全新安装是否已经带有用户表,首先检查一下。如果是这样,那么您需要更改表而不是创建表。如果没有,我看不出迁移失败的任何明显原因。

【讨论】:

以上是关于Laravel 5.2 迁移第二个表时出现数据库迁移错误的主要内容,如果未能解决你的问题,请参考以下文章

尝试迁移 Laravel 数据库时出现错误

在 Laravel 5.2 上路由文件路径时出现 405(不允许的方法)

如何使用 laravel 集合获取最后插入的 ID 并将其插入到第二个表中?

laravel 中的两个表连接和计算第二个表列

使用 Laravel 迁移创建外键时出现 MySQL 错误

使用Laravel迁移创建外键时出现MySQL错误