TL; DR: конфликт версий Python, я думаю, что загруженный и скомпилированный Python (3.6) не может использовать этот пакет (libmysqlclient-dev) для перехода на mysql.только системный Python по умолчанию (3.4) может.
мой сервер Ubuntu поставлялся с Python 3.4, вся моя работа с django и другие работы зависят от 3.6.я узнал, что обновление системного python - плохая идея, поэтому я скомпилировал python 3.6 (с altinstall
).
, когда я запустил python3.6 manage.py migrate
, он выдал мне ошибку mysql:
_mysql_exceptions.ProgrammingError: (1064, «у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с '(6) NOT NULL)' в строке 1")
Я попробовал виртуальную среду и обычный Python 3.6, оба выдавали одну и ту же ошибку, и я убедился, что установлены libmysqlclient-dev
и mysqlclient
.
как этот ответ предполагает, что проблема в libmysqlclient-dev
, потому что он установлен через apt-get
, а не pip
, поэтому я думаю, что он совместим только с Python по умолчанию (3.4, который поставляется с системой), или мой скомпилированный Python 3.6 не разрешениспользовать его, потому что, когда я сделал фиктивный проект django с python3.4 (по умолчанию системы) и попытался python3.6 manage.py migrate
в той же базе данных mysql с тем же пользователем, это сработало!
СНОВА: моя проблема в том, чтовручнуюСкомпилированный Python 3.6 не может использовать libmysqlclient-dev
, который был установлен apt-get
, только 3.4 может
ссылка: Ошибка Django MySQL при переносе
ОБНОВЛЕНИЕ Я придумал обходной путь, но он не эффективен.Я понизил Django до 2.0.9, и это (python manage.py migrate
) сработало.но эта проблема может появиться снова с другим пакетом.