2016-05-23 30 views
2

我有職員表,如下所述:更改列的數據類型沒有在表中數據損壞

+-------------+-----------------------+------+-----+---------+----------------+ 
| Field  | Type     | Null | Key | Default | Extra   | 
+-------------+-----------------------+------+-----+---------+----------------+ 
| employee_id | int(16) unsigned  | NO | PRI | NULL | auto_increment | 
| first_name | varchar(20)   | NO |  | NULL |    | 
| last_name | varchar(20)   | NO |  | NULL |    | 
| team  | varchar(20)   | NO |  | No Team |    | 
+-------------+-----------------------+------+-----+---------+----------------+ 

我想從varchar(20)改變球隊的類型varchar(128)沒有在表中數據損壞。

我該怎麼做?

+3

由於新長度大於舊長度,所以不會損壞。另外,它們具有相同的類型。 另一種情況是,如果舊的長度大於新的長度,則數據不是「損壞」,而是被截斷。 – Sherlock

+5

相似問題:https://stackoverflow.com/questions/10184086/mysql-how-to-increase-varchar-size-of-an-existing-column-in-a-database-without – cb0

回答

0

在這種情況下,您可以:

  • 創建數據庫的備份,以確保如果出現問題,你仍然有一個最新副本的工作與
  • 您的數據保存到臨時創建的表或列
  • 做變更和修改列
  • 檢查是否有保存您的信息,並與電勢差
  • 如果應付臨時之間的任何差別everyt興被處理得好,刪除臨時表/列,如果沒有,重新加載備份和從頭

啓動運行在這種特殊情況下,應該沒有問題,所以你可能會決定預防措施是否應該佔據主導地位。

0
ALTER TABLE `employee` CHANGE team team VARCHAR(128) NOT NULL DEFAULT 'No Team';