我有一个工作的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,但两个命令都会删除数据库中的每一行。
无论如何更新我的数据库列而不丢弃所有内容?
Maniac描述的完整解决方案将是:
php artisan make:migration add_newColumn_to_client
。public function up()
{
Schema::table('client', function (Blueprint $table) {
$table->string('newColumn');
});
}
php artisan migrate
如果您只添加一些列[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