2016-05-12 1 views
8

переустановил систему на убунту 16.04 и при первой попытке запуска python manage.py makemigrations получил следующее сообщение об ошибке:Не удается перенести Джанго базы данных на MySQL после обновления до Ubuntu 16.04

django.db.utils.OperationalError: (1193, "Unknown system variable 'storage_engine'") 

Мои Джанго базы данных настройки:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'license_portal', 
     'USER': '****', 
     'PASSWORD': '****', 
     'HOST': '127.0.0.1', 
     'PORT': '3306', 
     'OPTIONS': { 
      "init_command": "SET storage_engine=MyISAM", 
     }, 
    }, 
} 

библиотеки:

(mmslic) ➜ mmsLicenseServer git:(master) ✗ pip freeze    
Django==1.8.12 
django-admin-bootstrapped==2.5.7 
django-bootstrap3==7.0.1 
MySQL-python==1.2.5 
mysqlclient==1.3.7 
requests==2.9.1 
(mmslic) ➜ mmsLicenseServer git:(master) ✗ dpkg -l | grep -i mysql    
ii libmysqlclient-dev       5.7.12-0ubuntu1          amd64  MySQL database development files 
ii libmysqlclient20:amd64      5.7.12-0ubuntu1          amd64  MySQL database client library 
ii libmysqlclient20:i386       5.7.12-0ubuntu1          i386   MySQL database client library 
ii libqt4-sql-mysql:i386       4:4.8.7+dfsg-5ubuntu2        i386   Qt 4 MySQL database driver 
ii mysql-client-5.7        5.7.12-0ubuntu1          amd64  MySQL database client binaries 
ii mysql-client-core-5.7       5.7.12-0ubuntu1          amd64  MySQL database core client binaries 
ii mysql-common         5.7.12-0ubuntu1          all   MySQL database common files, e.g. /etc/mysql/my.cnf 
ii mysql-server         5.7.12-0ubuntu1          all   MySQL database server (metapackage depending on the latest version) 
ii mysql-server-5.7        5.7.12-0ubuntu1          amd64  MySQL database server binaries and system database setup 
ii mysql-server-core-5.7       5.7.12-0ubuntu1 
+0

Действительно ли вы действительно хотите использовать myisam? – middlestump

+0

@middlestump Я не мог заставить INNODB работать, и это довольно низкая производительность, поэтому пропускная способность БД не будет проблемой! –

+0

Но innodb по умолчанию используется в последних версиях mysql, поэтому он работает из коробки – middlestump

ответ

18

После борьбы с этим вопросом я что проблема была в версии MySQL 5.7.

С MySQL 5.7 команда SET storage_engine=MyISAM не будет работать, так что это была проблема!

Как указано на MySQL 5.7 documentation, используйте вместо этого default_storage_engine! Моя конфигурация стала:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'license_portal', 
     'USER': '****', 
     'PASSWORD': '****', 
     'HOST': '127.0.0.1', 
     'PORT': '3306', 
     'OPTIONS': { 
      "init_command": "SET default_storage_engine=MyISAM", 
     }, 
    }, 
} 
+0

Большое вам спасибо. Следует отметить, что эта ошибка может возникнуть при использовании http://seafile.com и обновлении базового MySQL-сервера. См. Также эту проблему на gitlab (https://github.com/haiwen/seafile/issues/1776). – benni

+0

Недавно я сделал чистую установку Mac OS и при установке mysql-сервера с варевом забыли указать версию - и был установлен установленный по умолчанию 5.7. Спасибо! – kopos

Смежные вопросы