簡體   English   中英

Laravel 5.2 如何在不丟失數據的情況下更新遷移

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM