Ich hatte vor einiger Zeit eine Tabelle erstellt und angefangen, Daten hinzuzufügen. Kürzlich habe ich eine neue Spalte ( address
) hinzugefügt, die NOT NULL
Teil der neuen Spalte ist. Die alten Zeilen (vor dem Hinzufügen) sind immer noch null, wodurch eine Warnung als Teil der Definition erstellt wurde. Neue Zeilen mit der neuen Spalte dürfen jedoch weiterhin Nullen einfügen.
Sind die Nullen vor dem Hinzufügen der neuen Spalte die Quelle dafür, dass sie zulässig sind? Wenn ja, gibt es eine Möglichkeit, MySQL anzuweisen, es nicht zuzulassen, obwohl es vorher war?
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>
Antworten:
Welche Version von MySQL ist das?
In welchem Modus laufen Sie?
(Dies sollte im Kontext Ihrer Anwendung ausgeführt werden, nur für den Fall, dass sie geändert wird.)
MySQL ist folgendermaßen dokumentiert: http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html
Meine eigenen Tests können Ihr Problem nicht duplizieren
Die Tatsache, dass die alten Daten Nullen hatten, sollte keine Rolle spielen. Die Alter-Tabelle sollte die Nullen in leere Zeichenfolgen 'abgeschnitten' haben
quelle