Saya telah membuat tabel beberapa waktu lalu dan mulai menambahkan data ke dalamnya. Baru-baru ini saya menambahkan kolom baru ( address
) ke dalamnya dengan NOT NULL
sebagai bagian dari kolom baru. Baris lama (pra-penambahan) masih nol, yang membuat peringatan sebagai bagian dari definisi. Namun, baris baru dengan kolom baru masih diizinkan untuk memasukkan nol.
Apakah pra-penambahan kolom baru nulls sumbernya diizinkan? Jika demikian, apakah ada cara untuk memberi tahu MySQL untuk tidak mengizinkannya meskipun sebelumnya?
mysql> show create table my_table\G
*************************** 1. row ***************************
Table: my_table
Create Table: CREATE TABLE `my_table` (
`entry_id` int(11) NOT NULL auto_increment,
`address` varchar(512) NOT NULL,
`follow_up_to` int(11) default NULL,
PRIMARY KEY (`entry_id`),
KEY `follow_up_to` (`follow_up_to`),
CONSTRAINT `my_table_ibfk_1`
FOREIGN KEY (`follow_up_to`)
REFERENCES `my_table` (`entry_id`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=535 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
mysql>
Jawaban:
Versi mysql apa ini?
Mode apa yang Anda jalankan?
(Ini harus dijalankan dalam konteks aplikasi Anda, kalau-kalau itu mengubahnya).
MySQL didokumentasikan sebagai berikut: http://dev.mysql.com/doc/refman/5.0/id/data-type-defaults.html
Pengujian saya sendiri gagal menduplikasi masalah Anda
Fakta bahwa data lama memiliki null seharusnya tidak menjadi masalah. Tabel Alter seharusnya 'memotong' nulls menjadi string kosong
sumber