使用Laravel 5更新数据库表时,有没有办法保留数据?
问题描述:
我有一个工作Laravel应用程序,我需要更新一个模型,并添加一个新的列到数据库。为了做到这一点,我下面的代码添加到数据库/迁移/ table.php文件:使用Laravel 5更新数据库表时,有没有办法保留数据?
Schema::table('client', function (Blueprint $table) {
$table->string('newColumn');
});
当我尝试更新数据库(与php artisan migrate
)我得到的消息“没有迁移”。我注意到应用此更改的唯一方法是执行php artisan migrate:refresh
或重置,但两个命令都会删除数据库中的每一行。
无论如何更新我的数据库列而不放弃一切?
答
完整的解决方案疯子描述是:php artisan make:migration add_newColumn_to_client
:
- 与创建新列。
-
下面的代码添加到新创建的文件(date_add_newColumn_to_client):
public function up() { Schema::table('client', function (Blueprint $table) { $table->string('newColumn'); }); }
运行
php artisan migrate
答
如果你只是增加一些列[S],可以导出数据使用完整的插入语句,运行迁移:刷新并重新导入数据。对于MySQL:
mysqldump -u {USER} -p {DATABASE} --no-create-db --no-create-info --complete-insert > yourdata.sql
artisan migrate:refresh
mysql -u {USER} -p {DATABASE} < yourdata.sql
你有移民表吗?你是否使用'php artisan make:migration add_newColumn_to_client'创建你的迁移? –
不,我使用make命令创建了数据库迁移表,但不添加该列,因此出现问题。我在迁移文件中添加了新的字段。谢谢! – Bruno
对,很高兴很简单! –