2016-06-28 3 views
5

コメント私は、コマンドライン上のMySQLからスクリプトを実行すると、私は次のようなエラーの束を得る:MySQLエラー1064は(「あなたはあなたのSQL構文でエラーが発生している」)私は、各命令の前に次のようなコメントで、スキーマを作成するための一連のスクリプトを持っている

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '------------------------------------------------------ 
------------------------' at line 1 

(実際には、私は常に行1を参照するメッセージにもかかわらず、各コメントに1つのエラーが出ます)。すぐに私は単純に、コメントを削除し、スクリプトは問題なく走ったが、私はそのような行動を見て、ここにStackOverflowに関連する質問を見つけることができないために驚いた私の問題を解決するために

。誰か説明がありますか?誰もが今までに、このような奇妙な振る舞いを観察しましたか?

私は、この時点でのMySQL 5.6.30は、Ubuntu上の5.6のデフォルトを実行しています。

答えて

8

:「 - 」行の末尾にシーケンス

からそれがなければ、それは単なる文字列です。 MySQLでは、「 - 」 (ダブルダッシュ)コメントスタイルは、そのようなので、上のスペース、タブ、改行 、及びとして(第2ダッシュが少なくとも一つの空白または制御文字 が続くことが必要です)。 「 - コメントの開始として 『』」のセクション1.8.2.4で説明したようにこの構文は、標準のSQL コメント構文とは少し異なります。

(強調鉱山)

TL; DRはコメントを示すあなた--は、少なくとも一つの空白または制御文字が続かなければなりません。あなたの

固定コード:

/* 
* Table TABLE_NAME 
*/ 

あるいはこの: http://dev.mysql.com/doc/refman/5.7/en/comments.html スペース:から

# ----------------------------------------------------- 
# Table TABLE_NAME 
# ----------------------------------------------------- 
+0

をと、Oracle構文とは異なり、MySQLは/ *このスタイルで*/'と同様に' 'コメントすることができます - このstyle'。 –

+0

@OllieJonesでもこのスタイルでは#D: – Magisch

+0

私はこの答えを最も完全に受け入れました。私は、SQLのコメントとして解釈されるダッシュの完全な行に慣れているので、エラーが発生したことに驚きました。私はインストールしているソフトウェアの提供者に、「mysql」ソフトウェアの内容が実際にはMySQLに準拠していないことを通知します:) –

3

あなたはコメントを示すために、2つのダッシュの後にスペースが必要です。 MySQL Manualから

-- ------------------------------------------------------ 
-- Table TABLE_NAME 
-- ------------------------------------------------------ 
0

ます。また、この構文を使用することができますMySQLでは

-- ----------------------------------------------------- 
-- Table TABLE_NAME 
-- ----------------------------------------------------- 

ダブルダッシュすなわち後に「 - 」コメントidentifの一部であり、 ication!MySQLの決定の背後にある 理由:ここhttp://dev.mysql.com/doc/refman/5.7/en/comments.html

スペースは、そのような私たちは、paymentの値を自動的に挿入 以下、などの構造を使用し、自動的に生成さ SQLクエリの問題を防止するために必要とされるされています

個人的に
UPDATE account SET credit=credit-payment 
UPDATE account SET credit=credit--1 
1

単一の行をコメントするとき、私は2つのダッシュ--を使用しています。ブロックコメントで作業する場合、私は次の形式を使用する傾向がある:

/** 
* Table TABLE_NAME 
* 
*/ 
関連する問題