Ticket #145 (closed Fehlermeldung: fixed)

Opened 1 year ago

Last modified 9 months ago

leere Felder für MySQL Query nicht korrekt auf NULL gesetzt

Reported by: driehle Assigned to: driehle
Priority: critical Milestone: Jlog 1.1.0
Component: Kernfunktion Version: 1.1.0
Keywords: Cc:

Description (Last modified by driehle)

Ich habe gerade beim Erstellen eines neuen Blog-Eintrags folgende Fehlermeldung bekommen:

request:
INSERT INTO jlogALT2_content (
                    topic,
                    url,
                    section,
                    date,
                    teaser,
                    teaserpic,
                    teaserpiconblog,
                    keywords,
                    content,
                    comments,
                    allowpingback   )
                VALUES (
                'test',
                'test',
                'weblog',
                    NOW(),
                'test',
                '1.png',
                '',
                'test',
                'mein Eintrag hat sehr viel Inhalt!',
                '1',
                '1'  );
response:
Incorrect integer value: '' for column 'teaserpiconblog' at row 1
Errorcode: 1366

Offensichtlich beschwert sich MySQL hier über das '', stattdessen sollte hier ein NULL stehen.

Was mich wundert: Mir ist dieser Fehler bisher noch nie aufgefallen, ich habe auch in den von mir genutzten Live-System noch nie deswegen eine Fehlermeldung bekommen.

Liegts daran, dass MySQL mit Version 5.0.45 (hab ich derzeit lokal installiert) irgendwie strenger geworden ist als mit den 4.x Versionen, welche ich live einsetze?

Attachments

Change History

02/13/2008 04:49:16 PM changed by driehle

Liegt in der Tat an dem Verhalten neuerer MySQL-Server, siehe hierzu:

Dies kann also zu einem Fehler führen, muss aber nicht zwangsläufig, je nachdem wie der MySQL-Server konfiguriert ist. Diese Einstellung lässt sich zwar zur Laufzeit ändern, was als Möglichkeit genutzt werden könnte, diesem Fehler entgegenzuwirken, besser wäre aber wohl, wenn wir den Query (und andere?) so umschreiben, dass sie bei jeder SQL-Mode Einstellung funktionieren.

02/18/2008 07:23:50 PM changed by driehle

  • status changed from new to closed.
  • resolution set to fixed.
  • description changed.

Auf meinem lokalen System (Win32), welches den Fehler verursacht, ist folgender SQL-Mode eingestellt: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Hingegen auf meinem Live-System (Debian-Linux) ist SQL-Mode lediglich ein leerer String.

Laut der MySQL FAQ - Server SQL Mode ist letzteres der Standard:

27.3.7: What is the default server SQL mode when My SQL 5.0 is installed?

By default, no special modes are enabled. See Section 5.1.6, “SQL Modes”, for information about all available modes and MySQL's default behavior.

Mein lokaler MySQL-Server scheint also übermäßig streng zu sein ;-) Trotzdem sollte Jlog natürlich funktionieren, weshalb ich mit [1694] jetzt noch einen Query absetzen lasse, welcher den SQL-Mode auf den Standard setzt - damit läuft nun Jlog auch bei mir lokal wieder.

02/18/2008 10:56:24 PM changed by driehle

  • status changed from closed to reopened.
  • resolution deleted.

02/18/2008 10:56:27 PM changed by driehle

  • owner set to driehle.
  • status changed from reopened to new.

02/18/2008 10:56:35 PM changed by driehle

  • status changed from new to closed.
  • resolution set to fixed.

Add/Change #145 (leere Felder für MySQL Query nicht korrekt auf NULL gesetzt)




Action