MySQL „FUNCTION does not exist“

Es gibt so Sachen die macht man unwissentlich immer richtig und wundert sich dann plötzlich dass nichts mehr geht wenn man es mal anders macht. Letzte Woche hatte ich wieder so einen Fall. Es handelte sich um ein recht banales SQL-Statement, das allerdings in einer unschönen Fehlermeldung resultierte…

Das eigentliche Statement war so eins wie dieses hier:

SELECT * FROM blog WHERE datum > now();

Zumindest hätte es das sein sollen. Allerdings hatte ich ein Leerzeichen nach dem now getippt, sodass sich ein solches Statement ergab:

SELECT * FROM blog WHERE datum > now ();

Durch das Leerzeichen ist MySQL leider nicht mehr in der Lage das now() zu erkennen. Daher liefert MySQL nur einen Fehler wie diesen zurück:
ERROR 1305 (42000): FUNCTION test.now does not exist

Dieses Beispiel liefert übrigens auf MySQL 5.0 und 5.1 einen Fehler.
Interessant ist allerdings, dass das Statement das ich genutzt habe auf dem Entwicklungsserver funktionierte, das Live-System aber eine Fehlermeldung lieferte. MySQL 5.1 (Entwicklungsserver) scheint da (zumindest bei einigen Funktionen) nicht ganz so streng zu sein wie MySQL 5.0, das auf dem Live-System genutzt wird. Das kann man an diesem Beispiel ganz schön sehen. Was mit MySQL 5.1 funktioniert:

mysql> SELECT version();
+-------------+
| version()   |
+-------------+
| 5.1.16-beta | 
+-------------+
1 ROW IN SET (0.00 sec)
 
mysql> SELECT date_format (now(), '%d.%m.%Y');
+---------------------------------+
| date_format (now(), '%d.%m.%Y') |
+---------------------------------+
| 17.02.2009                      | 
+---------------------------------+
1 ROW IN SET (0.00 sec)

liefert in MySQL 5.0 nur einen Fehler:

mysql> SELECT version();
+--------------------+
| version()          |
+--------------------+
| 5.0.51a-3ubuntu5.4 | 
+--------------------+
1 ROW IN SET (0.00 sec)
 
mysql> SELECT date_format (now(), '%d.%m.%Y');
ERROR 1305 (42000): FUNCTION test.date_format does NOT exist

Also immer schön darauf achten, dass vor dem Klammerpaar kein Leerzeichen steht, dann hat man auch kein Problem 😉

2 Reaktionen zu “MySQL „FUNCTION does not exist“”

Einen Kommentar schreiben