У меня есть скрипт python, который обрабатывает MySQL через соединитель mysqldb. Тот же скрипт отлично работает на моей машине OSX, когда он ломается, бросая исключение ошибки MySql при запуске на машине Ubuntu.скрипт python вызывает ошибку mysql при запуске на Ubuntu, но не при запуске на OSX
Детали обеих систем ниже:
OSX -
питон --version => Python 2.7.11 (установлен хотя Homebrew)
который питона =>/USR/местные/бен/Python
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 Ver 14.14 Distrib 5.5.50, для Debian-Linux-гну (x86_64) с использованием Readline 6.3
ошибка я получаю во время выполнения скрипта на поле Ubuntu является:
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