mysql> USE famous_scientists;
Database changed
->
這個^^^^箭是錯的。它不應該在這裏。
你應該看到這一點:
mysql> USE famous_scientists;
Database changed
mysql>
,你沒有表明,一些奇怪的事情是怎麼回事,並附上您打字或粘貼數據的事實這是不是一個真正的語法錯誤,這是隻是公然的混亂。
->
箭頭意味着CLI認爲您已經處於鍵入或粘貼SQL語句的中間,顯然您並不打算這麼做。
接下來要做的事情就是Control-C並重新開始。
錯誤信息本身是非常普遍的 - 任何類型的語法錯誤都會觸發它,但是如果你內在化了它的意思,你會爲自己節省很多精神上的痛苦。這似乎很神祕,但實際上並非如此。
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 '...'
無論是詞near
後的單引號內是發生錯誤時尚未被解析查詢的一部分。
換句話說,你看到的是開始的確切位置的的- 左到右 - 在查詢停止了語法意義的服務器。
重要的是,報告的具體錯誤不會晚於引用字符串的開始。之前也不太可能,因爲在查詢之前的任何位置,服務器認爲它在語法上是有效的。您可能在查詢的早期出現錯誤,但它不符合您的要求,但從服務器的角度來看,它不是語法錯誤。
例子:
mysql> SELECT * * FROM t1;
ERROR 1064 (42000): ...right syntax to use near '* FROM t1' at line 1
第二*
就是混淆了。之後的內容並不重要,因爲第二個*
在語法上無效。
mysql> SELECT * FROM FROM t1;
ERROR 1064 (42000): ...right syntax to use near 'FROM t1' at line 1
同樣的東西......第二個FROM
無效。解析停在那裏,因爲它沒有意義。
比方說,我想刪除一個表,但我忘記鍵入單詞DROP
。
mysql> TABLE t1;
ERROR 1064 (42000): ...right syntax to use near 'TABLE t1' at line 1
服務器說「等一下,你不能用關鍵字TABLE
開始查詢。」查詢中的第一件事是錯誤的。
請注意,我實際上沒有一個名爲t1
的表,但服務器沒有檢查這一點。遇到的第一個意想不到的事情就是停止這個過程。
這個例子就像你的...服務器似乎在抱怨查詢的開始......因此,查看任何更深入的查詢是完全沒有必要的。
所以這個錯誤...
...the right syntax to use near '
CREATE TABLE scientists (
...馬上告訴你這個服務器是由CREATE
或者一些控制字符或東西,看起來像空格前混淆。但問題不在後面。 CREATE
尚未評估。
這怎麼可能?你是對的,不是......除非在此之前有一些東西被輸入......我們知道這是由於->
提示。它究竟是什麼或者究竟如何到達那裏是不可能推測的。
最後一個例子,這一個往往是最容易混淆的......但是一旦你理解了上面的所有內容,它就很有意義。
mysql> SELECT * FROM user WHERE;
ERROR 1064 (42000): ...right syntax to use near '' at line 1
等等,什麼? near ''
是什麼意思?
請記住部分引號中的第一件事情,從服務器混淆開始?在這種情況下困擾服務器的是它解析了所有內容,一直到我的查詢結果,並發現我的查詢沒有任何意義。它很困惑,因爲在解釋我的查詢時,它需要更多,但它沒有發現更多。但是,我的查詢不可能完成,因爲我沒有在WHERE
之後放置任何東西。所以near ''
意味着結束後所有的東西。解析器(或者也許是詞法分析器,我離題了)已經耗盡了所有需要檢查的事情,但查詢仍然不完整,所以錯誤「接近」......沒有。它接近於在查詢結束時未解析的任何內容。
如果您的查詢有任何問題,這個錯誤並沒有告訴您這個問題。它基本上不被解析。
但是現在你知道如何在面對ERROR 1064 (42000)
時「像MySQL一樣思考」,並試圖弄清楚服務器試圖告訴你什麼。
什麼是INT(1)? –
說明: id:最大整數。大小爲1.不能爲空。自動從1增量。因此,我認爲它必須設置爲(1) –
INT(1)和INT(4)控制zerofull而不是該數字的存儲字節或不限制值的範圍... read https:// dev。 mysql.com/doc/refman/5.5/en/numeric-type-attributes.html –