【问题标题】:Can't migrate django databases on MySQL after upgrading to ubuntu 16.04升级到 ubuntu 16.04 后无法在 MySQL 上迁移 django 数据库
【发布时间】:2016-09-07 14:26:52
【问题描述】:

在 ubuntu 16.04 上重装系统,第一次尝试运行 python manage.py makemigrations 时出现以下错误:

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

我的 django 数据库设置是:

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  

【问题讨论】:

  • 你真的、真的想使用 myisam 吗?
  • @middlestump 我无法让 INNODB 工作,而且它是一项性能相当低的服务,因此数据库吞吐量不会成为问题!
  • 但是 innodb 在最新版本的 mysql 中是默认的,所以它开箱即用

标签: mysql django ubuntu


【解决方案1】:

在解决了这个问题后,我发现问题出在 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",
        },
    },
}

【讨论】:

  • 非常感谢。需要指出的是,在使用seafile.com 并更新底层 MySQL-Server 时可能会出现此错误。另请参阅 gitlab (github.com/haiwen/seafile/issues/1776) 上的此问题。
  • 我最近全新安装了 Mac OS,在使用 brew 安装 mysql-server 时忘记指定版本 - 并且安装了默认的 5.7。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-12-10
  • 2018-04-05
  • 2016-04-09
  • 2019-01-02
  • 2015-05-16
  • 2016-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多