2012-05-16 14 views
9

私はmysql v5.1.48と赤のhttp://dev.mysql.com/doc/refman/5.5/en/signal.htmlを使用しています。しかし、コードmySQL 5.1.48でsignalキーワードが機能しないのはなぜですか?

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

SQLエラー1064を上げる:あなたのSQL構文でエラーが発生しています。どのバージョンのSIGNAL開始からキーワードすべき

「SQLSTATE 『45000』に近い 使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアル をチェック!以前のバージョンのmysqlで例外を発生させるにはどうすればよいですか?

ありがとうございます。

答えて

11

MySQLバージョン5.1のためにthe manualで述べたように:条件に関連する

その他の書類SIGNALRESIGNAL、およびGET DIAGNOSTICSです。 SIGNALおよびは、MySQL 5.5までサポートされていません。 GET DIAGNOSTICSステートメントは、MySQL 5.6までサポートされていません。

古いバージョンのMySQLでエラーを発生させるには、意図的に誤ったコマンドを発行してください。 IしばしばCALL例えば、存在しない手順、:私は、レコードの特定の種類の削除を防ぐために作られた素敵なトリガーを変更しなければならなかった

CALL raise_error; 
+1

。 5.6でそれをテストし、すべてがクールだった。それから、私は5.1への配備が壊れていることを知っていました。私がしたことは: 'You'may_not_delete_those_kind_of_records'と呼んでください。笑。醜いです。しかし、作品と私のログで簡単に見つけることができます。 – cbmeeks

+0

MySQL 5.5.38では動作しません。 – Hibou57

+0

ここにあなたが楽しむ質問があります:[mysql 5.1はPDO例外を引き起こすエラーを通知する](http://stackoverflow.com/questions/18070473/mysql-5-1-signal-an-error-to-cause-pdo -exceptions)。 – Ggicci

関連する問題