有没有办法在使用Laravel 5更新数据库表时保留数据?

问题描述 投票:3回答:2

我有一个工作的Laravel应用程序,我需要更新模型并向数据库添加一个新列。为此,我将以下代码添加到database / migrations / table.php文件中:

Schema::table('client', function (Blueprint $table) {
        $table->string('newColumn');
});

当我尝试更新数据库(使用php artisan migrate)时,我收到消息“Nothing to migrate”。我注意到应用此更改的唯一方法是执行php artisan migrate:refresh或reset,但两个命令都会删除数据库中的每一行。

无论如何更新我的数据库列而不丢弃所有内容?

laravel laravel-5 laravel-migrations
2个回答
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

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
© www.soinside.com 2019 - 2024. All rights reserved.