2016-06-28 8 views
5

Ben komut bir dizi var yorumlar Ben komut satırında mysql komut dosyası yürütmesi, ben gibi hataların bir demet olsun şu:MySQL SQL tetiklediği Hata 1064 ("Eğer SQL sözdizimi bir hata var") her talimat önce aşağıdaki gibi bir yorum ile, bir şema oluşturmak için

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 

(aslında, hep hat 1 atıfta mesajın rağmen, her yorum için tek bir hata olsun).

Sorunumu hızlı bir şekilde çözmek için yorumları kaldırdım ve komut dosyası sorunsuz bir şekilde çalıştı, ancak böyle bir davranışı gördüğüme ve stackoverflow ile ilgili bir soru bulamadığımıza şaşırdım. Herkesin bir açıklaması var mı? Hiç kimse böyle garip davranışlar gözlemledi mi?

Şu anda mysql 5.6.30 çalıştırıyorum, şu anda 5.6 için ubuntu varsayılanı.

cevap

8

: “-” satırının sonuna dizisi

bir Dan Onsuz bu sadece bir dizedir. MySQL, “-” (çift çizgi) Yorum stil yüzden böyle bir boşluk, sekme, yeni satır olarak en azından bir boşluk veya kontrol karakteri (izledi ve alınacak ikinci çizgi gerektirir). Bu sözdizimi, Bölüm 1.8.2.4'te açıklandığı gibi standart SQL yorum sözdiziminden biraz farklıdır. 'un bir Yorumu Başlangıcı olarak “-”.

(Vurgu Mine)

tl; bir yorum gösteren DR Sizin -- en azından bir boşluk veya kontrol karakteri ile takip edilmelidir. senin

Sabit kod:

/* 
* Table TABLE_NAME 
*/ 

Hatta bu: http://dev.mysql.com/doc/refman/5.7/en/comments.html alanı: Gönderen

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

Ve Oracle sözdizimi aksine MySQL/* Bu tarzda */'yanı sıra' 'yorumlara izin verir - bu style'. –

+0

@OllieJones Bu stilde bile #: D – Magisch

+0

Bu cevabı en eksiksiz olarak kabul ettim. SQL'de yorum olarak yorumlanmış çizgi çizgilerine alışkınım, bu yüzden hataları artırdıklarını görünce şaşırdım. Ben "mysql" yazılımlarının içeriğinin aslında MySQL uyumlu olmadığını taklit ettiğim yazılımın sağlayıcılarını bilgilendireceğim :) –

3

Bir yorumu belirtmek için iki tire işaretinden sonra bir alana ihtiyacınız vardır. MySQL Manual itibaren

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

Ayrıca bu sözdizimini kullanabilirsiniz MySQL

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

çift ​​çizgi sonra yani "-" yorum tanımının bir parçası ication!MySQL kararın arkasında Gerekçe: Burada uzay böyle otomatik ödeme için ödeme değerini eklemek aşağıdakilerden gibi yapıları kullanın otomatik olarak oluşturulan SQL sorguları ile ilgili sorunları önlemek için gereklidir http://dev.mysql.com/doc/refman/5.7/en/comments.html

geçerli:

tek bir hat yorum zaman
UPDATE account SET credit=credit-payment 
UPDATE account SET credit=credit--1 
1

Kişisel, sadece iki tire -- kullanın. Blok yorumlarla çalışırken, ben aşağıdaki biçimi kullanma eğiliminde:

/** 
* Table TABLE_NAME 
* 
*/ 
İlgili konular