2012-05-16 12 views
9

Używam mysql v5.1.48 i czerwony http://dev.mysql.com/doc/refman/5.5/en/signal.html. Ale kodDlaczego słowo kluczowe signal nie działa w mySQL 5.1.48?

DELIMITER $$ 
CREATE PROCEDURE `CoreRaiseError`() 
BEGIN 
    SIGNAL SQLSTATE '45000' 
     SET MESSAGE_TEXT = 'An error occurred', MYSQL_ERRNO = 1001; 
END$$ 

podnieść

SQL Error 1064: Masz błąd w składni SQL; Sprawdź w instrukcji który odpowiada twojej wersji serwera MySQL dla prawego składnię użytku w pobliżu „«45000»SQLState

Od której wersji SIGNAL zaczynają być kluczowe? Jak mogę podnieść wyjątek z wcześniejszą wersją mysql?

Dziękuję.

Odpowiedz

11

Jak stwierdzono w the manual dla MySQL w wersji 5.1:

inne oświadczenia związane z warunków SIGNAL, RESIGNAL i GET DIAGNOSTICS. Instrukcje SIGNAL i RESIGNAL nie są obsługiwane do wersji MySQL 5.5. Instrukcja GET DIAGNOSTICS nie jest obsługiwana do wersji MySQL 5.6.

Aby zwiększyć błąd w starszych wersjach MySQL, po prostu celowo wydaj błędne polecenie. Często CALL procedura nie istnieje, na przykład:

CALL raise_error; 
+1

musiałem zmieniać piękny spust zrobiłem, aby zapobiec usuwaniu niektórych rodzajów płyt. Testowane w 5.6 i wszystko było w porządku. Wtedy dowiedziałem się, że wdrożenie do 5.1 zepsuł się, więc to działało dla mnie. To co zrobiłem to: 'call You_may_not_delete_those_kind_of_records'. lol. Brzydula .. ale działa i ułatwia znajdowanie w moich dziennikach. – cbmeeks

+0

To nie działa ani z MySQL 5.5.38. – Hibou57

+0

Oto pytanie, które może ci się spodobać: [mysql 5.1 sygnalizuje błąd powodujący wyjątki PDO] (http://stackoverflow.com/questions/18070473/mysql-5-1-signal-an-error-to-cause-pdo - wyjątki). – Ggicci

Powiązane problemy