簡體   English   中英

如何在不丟失數據的情況下改變MySQL表?

[英]How to alter MySQL table without losing data?

在我的應用程序中,我進行了一些更改並將它們上傳到測試服務器。 因為我無法訪問服務器數據庫,所以我運行ALTER命令對其進行更改。

使用方法我在服務器上運行以下命令:

ALTER TABLE `blahblahtable` ADD COLUMN `newcolumn` INT(12) NOT NULL

之后,我發現表的所有數據都已刪除。 現在表格是空白的。

所以我需要改變表而不刪除他的數據。 有沒有辦法做到這一點?

你的問題非常明顯。 您正在向表中添加新列,並將其設置為NOT NULL
為了使事情更清楚,我將在運行命令時解釋服務器的反應:

  1. 您添加了一個新列,因此表的每一行都必須為該列設置一個值。

  2. 由於您未聲明任何默認值 ,因此所有行都為此新列設置了null

  3. 服務器注意到表的行在不允許null的列上具有null值。 這是非法的。

  4. 要解決沖突,將刪除無效行。

這個問題有一些很好的解決方法:

  • 為您正在創建的列設置默認值 (推薦)。

  • 創建沒有 NOT NULL的列,設置適當的值,然后使列NOT NULL

您可以創建臨時表,傳遞要更改的表中的所有信息,然后將信息返回到更改的表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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