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 uniqueusers_email_unique
([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 5.2 上路由文件路径时出现 405(不允许的方法)