2016-07-28 153 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

相关问题