Некоторое время назад я создал таблицу и начал добавлять в нее данные. Недавно я добавил в него новый столбец ( address
) NOT NULL
как часть нового столбца. Старые строки (предварительное добавление) по-прежнему равны нулю, что создало предупреждение как часть определения. Однако новым строкам с новым столбцом все еще разрешено вставлять нули.
Допустимо ли добавление в ноль нового столбца источника их разрешения? Если так, есть ли способ сказать MySQL, чтобы он не разрешал это, даже если это было раньше?
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>
Ответы:
Какая версия MySQL это?
В каком режиме вы работаете?
(Это должно выполняться в контексте вашего приложения, на случай, если оно его изменит).
MySQL документируется следующим образом: http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html
Мое собственное тестирование не дублирует вашу проблему
Тот факт, что старые данные имеют нулевые значения, не должен иметь значения. Таблица Alter должна была «обрезать» пустые строки до пустых строк
источник