9

我有以下设置用于连接到 Django 中的 MySQL 数据库。

'default': {
    'NAME' : MYSQL_DB_NAME,
    #'ENGINE' : 'mysql',
    'ENGINE' : 'django.db.backends.mysql',
    'USER' : 'ccurvey',
    'PASSWORD' : MYSQL_PASSWORD,
    'HOST' : MYSQL_HOST,
    'PORT' : '',
    'OPTIONS' : {
        'init_command' : 'set storage_engine=INNODB',
        },
    },

到目前为止,一切都很好。

如果我想在我的“init_command”中添加另一个“set”命令,咒语是什么

        'init_command' : ('set storage_engine=INNODB',
                           'set transaction isolation level read committed'),

给我“connect() 参数必须是字符串,而不是元组”

        'init_command' : ('set storage_engine=INNODB; set transaction isolation level read committed;'),

给我

_mysql_exceptions.ProgrammingError: (2014, "Commands out of sync; you can't run this command now")
4

3 回答 3

9

对我来说有效的是:

{ 'init_command': 'set storage_engine=InnoDB; \
                   set session transaction isolation level read committed'}
于 2014-07-23T12:43:46.637 回答
4

不是:

 "init_command": 'set storage_engine=INNODB,    \
                  set transaction isolation level read committed;', }

这是:

 "init_command": 'set storage_engine=INNODB,    \
                  SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED', }
于 2012-08-28T18:50:19.930 回答
0

@ChrisCurvey's solution is OKay for me.

ENV: Python3.7.3 + Django2.2.1

'OPTIONS': {
    'init_command': 'SET default_storage_engine=INNODB, sql_mode="STRICT_TRANS_TABLES" ',
    'charset': 'utf8mb4',
},
于 2019-05-28T09:35:07.460 回答