Dies könnte eine Funktion anstelle eines Fehlers sein, also dachte ich, dass ich es auf SO anstelle von MariaDBs Jira aufnehmen sollte.Automatisches Casting von Standardwerten beim Einfügen
Gestern habe ich meine MariaDB Installation auf Homebrew von 10.1.23 auf 10.2.6 aktualisiert. Alle meine Selects funktionieren immer noch korrekt, aber jetzt, in meiner Legacy-App, erhalte ich eine Reihe von Fehlern bei Einfügungen, bei denen der Code "annimmt", dass MariaDB einen Standardwert setzt. Zum Beispiel ...
INSERT INTO table SET
email = '[email protected]', -- varchar
phone_number = '', -- bigint
ts = '2017-05-30 23:51:23', -- datetime
some_val = '689728' -- varchar
Dieser Code wurde fein vor der Arbeit, aber da ich jetzt aufgerüstet habe ich die folgenden zwei Fehler auftreten ...
Fehler 1 (is_some_toggle ist ein tinyint und ist nicht oben in der Abfrage definiert ist, wird angenommen, dass MariaDB nur
Field 'is_some_toggle' doesn't have a default value
Fehler 2 (nachdem ich das Standardwert is_some_toggle)
Incorrect integer value: '' for column 'phone_number' at row 1
) würde einfügen
Ich vermute, das ist eine Funktion, kein Fehler. Ich habe durch ihre changelogs für 10.2 Reihe geschaut und ich sehe nicht, dass etwas heraus springt, aber es gibt viel, also könnte ich es verpasst haben. Ich sah eine Serverkonfiguration für OLD_SQL, aber das schien nicht das zu sein, wonach ich suchte. Irgendwelche Gedanken?
macOS Sierra 10.12.5 btw
CREATE TABLE `table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(200) NOT NULL,
`phone_number` bigint(20) NOT NULL,
`some_val` varchar(6) NOT NULL,
`ts` datetime DEFAULT NULL,
`is_some_toggle` tinyint(1) NOT NULL,
PRIMARY KEY (`id`),
KEY `email_code` (`email`(15),`some_val`),
KEY `phone_number_code` (`phone_number`,`some_val`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
Bitte geben Sie 'SHOW CREATE TABLE' an. –