MySQLにコマンドを発行すると、エラー#1064「syntax error」が発生します。
どういう意味ですか?
どうすれば修正できますか?
SQuirreL ClientでCREATE PROCEDUREのようなセミコロンを使用してSQL式を実行するとエラーが発生する場合は、MySQLプラグインが必要です。インストール時に選択できます。デフォルトでは選択されていません。
私の場合は、MySQLでプロシージャコードを実行しようとしていましたが、エラーコード1064が表示されていたため、Serverでステートメントの終了位置を特定できないという問題がありました。それはうまくいった。
たとえば、
DROP PROCEDURE IF EXISTS getStats;
CREATE PROCEDURE `getStats` (param_id INT, param_offset INT, param_startDate datetime, param_endDate datetime)
BEGIN
/*Procedure Code Here*/
END;
DELIMITERを置いた後、それはこんな感じでした:
DROP PROCEDURE IF EXISTS getStats;
DELIMITER $$
CREATE PROCEDURE `getStats` (param_id INT, param_offset INT, param_startDate datetime, param_endDate datetime)
BEGIN
/*Procedure Code Here*/
END;
$$
DELIMITER ;
必要な引用符なしで、JSONまたは他のデータを特殊文字で挿入しようとしたときにも、このエラーが発生します。
UPDATE myTable SET myJSONfield = {};
に変更
UPDATE myTable SET myJSONfield = '{}';
それはあなたの文字列や挿入されたデータにシングルクォート 'が含まれているからです
mysql_real_escape_string() for mysql or mysqli_real_escape_string() for mysqli
データベースへのデータ挿入(クエリ挿入)中に文字列をエスケープする機能。
様々な理由があります。変数を宣言すると、他の種類のステートメントよりも前になります。それ以外の場合は、その前にBEGINブロックを配置する必要があります。
DECLARE _RoomID INTEGER ;
SET _dtTodayTmp=NOW();
SET _dtToday=DATE_FORMAT(_dtTodayTmp,"%m/%d/%y");
SET _tmNow=DATE_FORMAT(_dtTodayTmp,"%h:%i:%s");
DECLARE tree_cursor1 CURSOR
FOR SELECT roomid FROM reservationDet rd WHERE rd.status=3 AND rd.compcode=pCompCode;
エラーを出しますので、それを作る必要があります
DECLARE _RoomID INTEGER ;
SET _dtTodayTmp=NOW();
SET _dtToday=DATE_FORMAT(_dtTodayTmp,"%m/%d/%y");
SET _tmNow=DATE_FORMAT(_dtTodayTmp,"%h:%i:%s");
**BEGIN**
DECLARE tree_cursor1 CURSOR
FOR SELECT roomid FROM reservationDet WHERE STATUS = 3 AND compcode = pCompCode ;