[英]Laravel 5.2 how to update migration without losing data
我使用的是laravel 5.2,我通常根據項目要求更新我的數據庫,所以我想在不丟失數據庫記錄的情況下進行。 我不是說如何為我的數據庫做種。我的意思是當我的數據庫處於活動狀態並且我想更新它時會引發 Laravel 遷移。 我正要扔Laravel 文檔,但我什么也沒找到,所以我希望有人能幫助我
由於您的表中已經有數據,因此您可以創建新的遷移文件來更新您的表,而不是回滾您的遷移(這將導致現有數據丟失)。 假設您有一個表users
其中包含name, email, password
列。 您將數據存儲在該表中。 然后您意識到您還需要向用戶表中添加一個名為mobile_no
的新列。 為此,您需要創建一個新的遷移文件。 命令將是:
php artisan make:migration add_mobile_no_columns_to_users_table --table=users
這樣將創建一個新的遷移文件。 在那里設置您的列詳細信息,使用php artisan migrate
運行php artisan migrate
,僅此php artisan migrate
。 您將在users
表中擁有這個新列,而不會丟失以前存儲的數據。
請注意,當您在已有數據的情況下為表添加新列時,您必須為新列設置默認值或使其為可為空類型..否則最終會出錯
確保在表中添加新列時,該列應該可以為空,並且不應該是唯一的。 否則你將面臨錯誤。 因為當創建新列時,它將是空的(不是唯一的)。 在這種情況下,您必須回滾遷移。
進行新的遷移
php artisan make:migration change_body_to_nullable_in_reviews_table --table=reviews
你把這個放在哪里
public function up()
{
Schema::table('reviews', function (Blueprint $table) {
$table->text('body')->nullable()->change();
});
}
public function down()
{
Schema::table('reviews', function (Blueprint $table) {
$table->text('body')->nullable(false)->change();
});
}
然后運行 PHP artisan migrate
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.