2016-05-12 12 views
8

ponownej instalacji systemu Ubuntu 16.04 i kiedy po raz pierwszy próbuje uruchomić python manage.py makemigrations mam następujący błąd:nie mogą migrować baz django na MySQL po aktualizacji do Ubuntu 16,04

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

moich django baz danych są następujące ustawienia:

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", 
     }, 
    }, 
} 

biblioteki:

(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

Czy naprawdę, naprawdę chcesz używać myisam? – middlestump

+0

@middlestump Nie mogłem zmusić INNODB do pracy i jest to usługa o niskiej wydajności, więc przepustowość bazy danych nie byłaby problemem! –

+0

Ale innodb jest domyślny w najnowszych wersjach mysql, więc działa po wyjęciu z pudełka – middlestump

Odpowiedz

18

Po zmaga się z tym problemem mam odkrył, że problemem była zmiana w wersji MySQL 5.7.

Z MySQL 5.7 polecenie SET storage_engine=MyISAM nie zadziała, więc to był problem!

W zamian za to zauważyłem na MySQL 5.7 documentation użyj default_storage_engine! Moja konfiguracja stała się:

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

Dziękuję bardzo. Należy podkreślić, że ten błąd może powstać podczas korzystania z http://seafile.com i aktualizacji bazowego serwera MySQL. Zobacz także ten numer na gitlab (https://github.com/haiwen/seafile/issues/1776). – benni

+0

Niedawno dokonałem czystej instalacji systemu Mac OS i podczas instalacji mysql-server z zaparzeniem zapomniałem podać wersję - i zainstalowano domyślną wersję 5.7. Dziękuję Ci! – kopos