datadexx
Goto Top

Umstellung MariaDB Tabellen von MyISAM auf InnoDB

Hallo zusammen,

ich habe einen MariaDB Server von Version 5.x auf MariaDB 10.3 geändert und in einer Datenbank die Engine von MyISAM auf InnoDB umgestellt mit Alter table...
Danach habe ich noch die Verschlüsselung für innoDB Tabellen aktiviert.

Die Datenbank gehört zu einer Webanwendung, aus der Daten via Formular in die Datenbank eingetragen werden. Die Formulare werden nur noch in die Datenbank eingetragen, wenn alle Felder ausgefüllt sind, ansonsten erhalte ich den Fehler 1366 : Incorrect double value: '' for column 'xxx'... Leider finde ich mit Google zu dem Fehler nichts, entweder ist was anderes beschrieben oder es ist noch truncated dabei und beschreibt nicht den Fehler bei mir. Das Feld xxx z.B. kann NULL sein und hat den Standard 0.00. Wird also bei der Erfassung nichts für den Preis im Formular eingetragen, soll der Standard 0.00 eingetragen werden. Funktionierte mit der alten Tabelle unter MyISAM und MariaDB 5.x so bestens. Komischerweise, wenn ich die alte MyISAM Tabelle wiederherstelle, habe ich dieses Verhalten jetzt auch dort...

Wie bekomme ich es hin, das trotzdem ein INSERT erfolgt, auch wenn "leere Strings" übergeben werden, bzw. wenn Felder in der Anwendung nicht ausgefüllt werden. Es ist nämlich so, das ein Datensatz erfasst werden können muss, ohne das zum Zeitpunkt der Erfassung alle Felder befüllt sind.

Besten Dank für eine Info!

Hier mal ein konkretes Beispiel der Fehlermeldung:

1366 : Incorrect double value: '' for column 'preis' at row 1
Query: INSERT INTO planung (datum, auftraggeber, ladeort, empfangsort, unternehmer, preis, unt_anteil, gewinn, eingang, ausgang, faehre_zoll, abwicklung, infos, maut, ktransa , dpo_ldm, dpo_gewicht, dpo_fpf_gewicht, dpo_ldmart, dpo_ldm_anzahl, dpo_ware, dpo_ware2, dpo_bezeichnung, dienstgut, ladenummer) VALUES ('2018-08-06', '', '', '', '', '', '', '0', '2018-08-06', '2018-08-06', '', '0', '', '', '' , '', '', '', '', '', '', '', '', '', '' )

Content-ID: 382436

Url: https://administrator.de/contentid/382436

Ausgedruckt am: 15.11.2024 um 21:11 Uhr

SeaStorm
SeaStorm 06.08.2018 um 11:28:19 Uhr
Goto Top
Hi

bedeutet genau das was da steht: Du gibst in dem Beispiel für "preis" einen leeren String an. Das ist kein zulässiger DOUBLE Wert.
Entweder 0.00 übergeben oder NULL draus machen, wenn im Feld zugelassen.
datadexx
datadexx 06.08.2018 um 11:36:21 Uhr
Goto Top
Aber es gibt doch Standardwerte die dafür in der Tabelle hinterlegt sind? Feld darf NULL sein, Standard 0.00 ist konfiguriert.

Heisst das dann für mich, ich muss in der Anwendung dafür sorgen, das 0.00 oder NULL übergeben wird?
SeaStorm
Lösung SeaStorm 06.08.2018 um 11:37:37 Uhr
Goto Top
Standard bedeutet, das wenn du bei einem INSERT das Feld NICHT angibst, das er diesen Wert dann nimmt.
Du gibst ihn aber explizit an. Und da steht murks drin.
datadexx
datadexx 06.08.2018 um 11:45:34 Uhr
Goto Top
komisch, das hat so unter MariaDB 5.x funktioniert. Die INSERTS wurden immer korrekt ausgeführt.
bloodstix
Lösung bloodstix 06.08.2018 um 17:38:53 Uhr
Goto Top
Ich schätze das liegt an irgendwelchen restriktiveren Regeln die in Maria DB 10 nun per default aktiv sind.
Man macht auch erlich gesagt nicht einfach so ein Update über 5 Major-Versionen. Du hast Glück das es überhaupt noch irgendwie funktioniert.

Welche Webanwendung ist es? Hat der Hersteller diese für MDB 10.3 freigegeben?
datadexx
datadexx 08.08.2018 um 12:23:39 Uhr
Goto Top
Hi zusammen,

das ist eine Eigenentwicklung des Kunden, nicht von mir und er muss bzw. will wegen der Verschlüsselungsmöglichkeiten ab MariaDB 10.x umsteigen. Wir haben es aber bereits mit dem Kunden klären können, das ein Umstieg wohl nicht mal eben so gemacht ist, war zum Glück alles nur ein Test in der Entwicklungsumgebung. Die Anwendung muss dahingehend erstmal korrekt angepasst werden.

Besten Dank an euch!