2016-07-28 166 views
-1

我有一個通過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)); 
+1

鑑於該錯誤具體表明一個SQL錯誤,它可能會有助於發佈它失敗的查詢。從你提供的版本信息來看,這兩個系統在MySQL上運行的版本不同,這是一個公平的猜測,你的查詢使用了一個在另一個版本中無效的有效的東西。 – Uueerdo

回答

1

一些快速研究爲DATETIME數據類型的官方文件顯示,小數秒說明符沒有出臺,直到5.6.4 。

的MySQL 5.6.4及以上擴大小數秒支持...

這是我跟文件的路徑:

  1. http://dev.mysql.com/doc/refman/5.7/en/datetime.html
  2. http://dev.mysql.com/doc/refman/5.7/en/fractional-seconds.html
  3. http://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html(手動將網址的「5.7」更改爲「5.6」以達到此目的)。
+0

是的,我自己通過升級Ubuntu盒子上的MySql來解決這個問題,雖然我懷疑問題是與版本本身有關,但我並沒有深入研究它。 @Uueerdo非常感謝這個指針。 :) – qre0ct

相關問題