2016-06-28 13 views
5

Mam szereg skryptów do tworzenia schematu, z komentarzem jak poniżej przed każdą instrukcją:MySQL Błąd 1064 („Masz błąd w SQL”) wywołany przez SQL komentuje

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

kiedy wykonać skrypt z mysql w linii poleceń, mam kilka błędów jak następuje:

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 

(faktycznie, mam jeden błąd za każdy komentarz, pomimo wiadomości zawsze odnosząc się do linii 1).

Aby szybko rozwiązać mój problem, po prostu usunąłem komentarze i skrypt działał bezproblemowo, ale byłem zaskoczony, widząc takie zachowanie i nie mogłem znaleźć odpowiedniego pytania tutaj na stackoverflow. Czy ktoś ma wyjaśnienie? Czy ktoś kiedykolwiek zaobserwował tak dziwne zachowanie?

Używam mysql 5.6.30, domyślny dla 5,6 na ubuntu w tym czasie.

Odpowiedz

8

Z MySQL Manual:

Z „-” sekwencji do końca linii. W MySQL, „-” (double-kreska) komentarz styl wymaga drugą kreskę być następnie przynajmniej jedną spacją lub kontroli charakteru (takich jak przestrzeń, zakładki, nowej linii, i tak dalej). Ta składnia różni się nieco od standardowej składni komentarza SQL, tak jak to opisano w Sekcja 1.8.2.4, "" - "jako" Początek Komentarz ".

(podkreślenie moje)

TL; DR Twój -- wskazując komentarz musi następować co najmniej jedną spacją lub kontroli charakteru.

Poprawiono kod Twoja:

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

W MySQL można również użyć następującej składni:

/* 
* Table TABLE_NAME 
*/ 

Albo jeszcze tak:

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

I, w przeciwieństwie do składni Oracle, MySQL pozwala komentarzy '/ * w tym stylu * /' ', jak również - w ten style'. –

+0

@OllieJones Nawet '# w tym stylu': D – Magisch

+0

Zaakceptowałem tę odpowiedź jako najbardziej kompletną. Jestem przyzwyczajony do pełnych linii kresek interpretowanych jako komentarze w SQL, więc zdziwiłem się widząc, że podniosły błędy. Poinformuję dostawców oprogramowania, które instaluję, że zawartość ich oprogramowania "mysql" nie jest zgodna z MySQL :) –

3

Potrzebujesz spacji po dwóch myślnikach, aby wskazać komentarz. Bez niego to tylko ciąg:

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

Od: http://dev.mysql.com/doc/refman/5.7/en/comments.html Przestrzeń po podwójnym myślniku tzn. "-" jest częścią identyfikatora komentarza ication! Uzasadnieniem decyzji MySQL: jest tu http://dev.mysql.com/doc/refman/5.7/en/comments.html

jest wymagana przestrzeń, aby zapobiec problemom z automatycznie generowanych zapytań SQL, które używają konstrukcje takie jak poniżej, gdzie automatycznie wstawi wartość opłaty za płatności:

UPDATE account SET credit=credit-payment 
UPDATE account SET credit=credit--1 
1

Osobiście używam tylko dwie kreski -- komentując pojedynczą linię. Podczas pracy z komentarzy blokowych, staram się użyć następującego formatu:

/** 
* Table TABLE_NAME 
* 
*/ 
Powiązane problemy