2014年6月26日星期四

MySQL的表錯誤1064

Original post : http://anothermysqldba.blogspot.com/2014/06/mysql-table-error-1064.html

所以,我碰到一個奇怪的局面今天就來了。 

我有一個使用PHP $ _COOKIE ['PHPSESSID']的值創建內存表的系統。 

一旦有些工作已經完成它,然後刪除表。 

兩個示例表下面是我的榜樣。 


@@VERSION: 5.6.19-log 
CREATE TABLE `f7a7a8d3a7ba75b5eb1712864c9b27eb` ( 
-> `id` int(11) NOT NULL AUTO_INCREMENT, 
-> PRIMARY KEY (`id`) 
-> ) ENGINE=MEMORY; 

CREATE TABLE `8865e52c7e1bea515e7156f240729275` ( 
-> `id` int(11) NOT NULL AUTO_INCREMENT, 
-> PRIMARY KEY (`id`) 
-> ) ENGINE=MEMORY; 


現在,一些簡單的處理發生在我用那麼就像我說我放棄了他們的真實的表。 


DROP TABLE IF EXISTS f7a7a8d3a7ba75b5eb1712864c9b27eb; 
Query OK, 0 rows affected (0.09 sec) 


很簡單的,直到我跑過這個.. 


desc 8865e52c7e1bea515e7156f240729275; 
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 '8865e52c7e1bea515e7156f240729275' at line 1 

DROP TABLE IF EXISTS 8865e52c7e1bea515e7156f240729275; 
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 '8865e52c7e1bea515e7156f240729275' at line 1 


現在,修復其實很簡單。 但問題是,為什麼一部作品和一個失敗? 

為了解決這個問題只是反引號的表名。 我應該從一開始無論如何都做。 這僅僅是一個良好的習慣進入。 


DROP TABLE IF EXISTS `8865e52c7e1bea515e7156f240729275`; 
Query OK, 0 rows affected (0.02 sec) 


現在,我首先想到的,也許這個問題是字母數字的名稱,但我們可以看到,一個版本的作品。 所不同的不過是表名的開頭。 之一是一個整數和一個是字母字符。 如此反复..遵循最佳實踐和報價表名,以避免這種愚蠢的錯誤。 


在所有的錯誤代碼是解析錯誤.. 


perror 1064 
MySQL error code 1064 (ER_PARSE_ERROR): %s near '%-.80s' at line %d