2014-04-09 20 views
37

Benim mevcut tablosu: Böyle tabloyu değiştirmek istediMySQL Alter tablo hatası neden olur: BOŞ değerinin geçersiz kullanımını

+-----------------+---------------+------+-----+---------+-------------------+ 
| Field   | Type   | Null | Key | Default | Extra    | 
+-----------------+---------------+------+-----+---------+-------------------+ 
| creation_date | timestamp  | YES |  | NULL      | 

:

ALTER TABLE enterprise MODIFY creation_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP; 

Ama bu hata var:

HATA 1138 (22004) satır 7'de: NULL değerinin geçersiz kullanımı

Sorun Nullable inşasını değiştirmek gibi görünüyor h EVET NULL DEĞİLDİR. Sütunu bırakıp sonra eklemem gerekir mi?

cevap

59

gibi

.

bu

--update null value rows 
UPDATE enterprise 
SET creation_date = CURRENT_TIMESTAMP 
WHERE creation_date IS NULL; 


ALTER TABLE enterprise 
MODIFY creation_date TIMESTAMP NOT NULL 
DEFAULT CURRENT_TIMESTAMP; 
+0

Bunun için teşekkürler, @rs. – bdalina

1

You can't use this query until you have null values in creation_date column.

güncelleme creation_date bazı varsayılan tarihi ile kolon, ardından tabloyu değiştirebilir. Orada o sütundaki varsayılan bir tarihe BOŞ value.Update ile birkaç sıra tüm boş değerler ve ardından bir alter yapmaya çalışacağım gibi görünüyor bu

UPDATE enterprise SET creation_date = CURRENT_TIMESTAMP WHERE creation_date IS NULL; 

ALTER TABLE enterprise MODIFY creation_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP; 
+1

Geç yorumunu deneyin ama bu da sizin sürece NULL değerleri varsa veya herhangi NULL değerleri yok edene kadar kullanamazsınız olmalıdır tahmin ediyorum. Aksi halde bir sorun olmaz. – thisisboris

İlgili konular