我有一个有效的Laravel应用程序,我需要更新模型并向数据库添加新列。为此,我将以下代码添加到database / migrations / table.php文件中:
Schema::table('client', function (Blueprint $table) {
$table->string('newColumn');
});
当我尝试更新数据库时(使用php artisan migrate
),我收到消息"无法迁移"。我注意到应用此更改的唯一方法是执行php artisan migrate:refresh
或重置,但两个命令都会删除数据库中的每一行。
是否有更新我的数据库列而不丢弃所有内容?
答案 0 :(得分:3)
Maniac描述的完整解决方案将是:
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
答案 1 :(得分:0)
如果您只添加一些列[s],则可以使用完整的insert语句导出数据,运行migrate:refresh并重新导入数据。对于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