我正在計劃對我的數據庫進行重大更改,這需要一組SQL指令(可能還有一個非SQL腳本),以便將舊數據容納到新模式中。我應該如何操作Laravel數據庫遷移數據?或者我應該在別的地方去做嗎?
現在,是它操縱在遷移腳本數據是個好主意?或者它只是用於模式(DB結構)更改?
我正在計劃對我的數據庫進行重大更改,這需要一組SQL指令(可能還有一個非SQL腳本),以便將舊數據容納到新模式中。我應該如何操作Laravel數據庫遷移數據?或者我應該在別的地方去做嗎?
現在,是它操縱在遷移腳本數據是個好主意?或者它只是用於模式(DB結構)更改?
數據操作不進行遷移的事情。由於自然遷徙的作品。我會建議使用遷移來僅定義數據庫模式。
由Laravel逐個執行遷移,按照它們創建的確切順序執行,因此它可以跟蹤執行和執行順序 ref。安東尼奧卡洛斯里貝羅。
這阻止一個人分管,他/她要運行的類或文件。例如,您可以選擇在部門表之前播種用戶表,在另一種意義上,您可以選擇反之亦然。移民並不具備這種自由。
及數據的處理,我會建議你使用播種機來處理,因爲你可以選擇在任何時間點運行的類使用
PHP工匠DB:種子--class =類名
由於這個名字就是種子。含義填充數據庫。考慮遷移時
兩個問題是很重要的。
原始查詢有助於這兩個問題。
$elements = DB::Select(DB::Raw('SELECT element_id FROM record GROUP BY element_id'));
foreach ($elements as $element)
{
DB::Statement('
INSERT INTO account (created_at, updated_at, name, element_id)
VALUES (NOW(), NOW(), "Migrated account", '. $element->element_id .')
');
}
遷移可以使用,但是......我會建議不要有很大變化遷移。如果PHP代碼超時會發生什麼?如果你的內存不足,該怎麼辦?相反,保持您的原始數據庫。複製/創建一個您可以更改的全新環境。您可能能夠將用戶轉發到新網站或更改DNS記錄。如果出現問題,您需要能夠恢復。有一個備份計劃! – jjwdesign
@jjwdesign好點。但是,這是我爲不超時設置的CLI腳本,此遷移將在我當前的數據集上運行,該數據集當時非常小。儘管數據庫正在增長(而這一系列變化是由於增長)。 – Mauro