Laravel迁移在现有数据库表中添加列问题
Posted
技术标签:
【中文标题】Laravel迁移在现有数据库表中添加列问题【英文标题】:Laravel migration add colum issue in existing database table 【发布时间】:2018-02-06 23:49:18 【问题描述】:我在 laravel 4.2 项目中工作,现在我想在现有表用户中添加列。现在我想添加另一列,当我运行迁移命令时,我总是收到相同的消息“没有要迁移的东西”。 下面是我的迁移模式代码
public function up()
Schema::table('users', function($table)
$table->string('dob')->nullable()->change();
);
我在终端中运行的命令
php artisan migrate --path=/database/migrations/2017_08_29_130700_add_colum_user_is_black_list.php
我也运行以下命令
php artisan migrate
但是当我运行上述命令时,我收到以下错误
SQLSTATE[42S01]:基表或视图已存在:1050 表“用户”已存在
【问题讨论】:
@RAUSHANKUMAR 然后我收到此错误“SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists” 【参考方案1】:您需要按照以下步骤使用 laravel 迁移在现有表中添加列。
Laravel 3+、4+
使用 CLI 进行迁移(使用特定名称以避免与现有模型冲突)
php artisan migrate:make add_dob_users_table --table=users
Laravel 5+
使用 CLI 进行迁移(使用特定名称以避免与现有模型冲突)
php artisan make:migration add_dob_to_users
Laravel 3+
使用Schema::table()
方法(当您访问现有表,而不是创建新表时)并添加这样的列:
public function up()
Schema::table('users', function($table)
$table->string('dob')->nullable()->change();
);
添加回滚选项:
public function down()
Schema::table('users', function($table)
$table->dropColumn('dob');
);
Laravel 4+、5+
使用Schema::table()
方法(当您访问现有表,而不是创建新表时)并添加这样的列:
public function up()
Schema::table('users', function(Blueprint $table)
$table->string('dob')->nullable()->change();
);
添加回滚选项:
public function down()
Schema::table('users', function(Blueprint $table)
$table->dropColumn('dob');
);
Laravel 3+、4+、5+
最后运行你的迁移
php artisan migrate
用于创建和运行迁移的文档是
Laravel 3+
Laravel 3 Schema Builder
Laravel 3 Migrations
Laravel 4、5
Laravel Schema Builder
Laravel Migrations
【讨论】:
仍然面临同样的问题 "[PDOException] SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists" 即使我按照您定义的相同步骤进行操作。 你用的是什么 laravel 版本? 尝试在函数中添加bluprint
Schema::table('users', function(User $table)
在这里查看文档laravel.com/docs/5.4/migrations#creating-columns
我正在使用的 Laravel 4.2 版本以上是关于Laravel迁移在现有数据库表中添加列问题的主要内容,如果未能解决你的问题,请参考以下文章