我有一個通過mysqldb連接器處理MySQL的python腳本。同樣的腳本在我的OSX機器上運行得非常好,當它在Ubuntu機器上運行時會拋出MySql錯誤異常。均低於系統的python腳本在Ubuntu上運行時拋出mysql錯誤,但在OSX上運行時不會拋出mysql錯誤
詳細說明:
OSX -
蟒--version =>的Python 2.7.11(雖然安裝自制)
,其蟒=>的/ usr/local/bin中/蟒
MySQL的--version =>的MySQL版14.14 DISTRIB 5.7.10,用於osx10.9使用下(x86_64)EditLine包裝器
Ubuntu - 在
蟒--version =>的Python 2.7.6(默認的系統的Python)
,其蟒=>的/ usr /斌/蟒
MySQL的--version =>的MySQL版14.14 DISTRIB 50年5月5日,對於使用readline的6.3
我收到關於Ubuntu的機器上運行的腳本時的錯誤Debian的Linux-GNU(x86_64的)是:
Traceback (most recent call last):
File "my_program.py", line 364, in <module>
dao = DataAccessObject(debugger)
File "/home/path_to_file/project/handle_storage.py", line 42, in __init__
self.cur.execute(create_restaurant_table)
File "/usr/local/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 205, in execute
self.errorhandler(self, exc, value)
File "/usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
_mysql_exceptions.ProgrammingError: (1064, "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 '(6) NOT NULL, some_time_column DATETIME NOT NULL, record_hash TEXT NOT NULL, PRIMARY K' at line 1")
請幫助我理解它是什麼,是怎麼回事錯在這裏?如果它真的是我的代碼的問題,正如上面的錯誤消息所建議的那樣,爲什麼腳本在OSX機器上運行良好?
線路上查詢斷裂按照上面的例外是:
CREATE TABLE IF NOT EXISTS my_table (id int NOT NULL AUTO_INCREMENT, name TEXT, area TEXT, address TEXT, locality TEXT, fee_type TEXT, charge TEXT, cost TEXT, stuff TEXT, rating TEXT, later TEXT, type TEXT, cityCharge TEXT, record_entry_at DATETIME(6) NOT NULL, as_on DATETIME NOT NULL, record_hash TEXT NOT NULL, PRIMARY KEY (id));
鑑於該錯誤具體表明一個SQL錯誤,它可能會有助於發佈它失敗的查詢。從你提供的版本信息來看,這兩個系統在MySQL上運行的版本不同,這是一個公平的猜測,你的查詢使用了一個在另一個版本中無效的有效的東西。 – Uueerdo