我尝试通过Django应用程序更改RDS上MySQL示例的隔离级别。我遵循了here建议
因此,我将Django数据库设置更改为:
'OPTIONS': {
'init_command': 'SET default_storage_engine=INNODB; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED'
}
当我直接在数据库(MySQL版本8.0.13)中运行时,此命令工作正常。然而,当我尝试将其部署到Elastic Beanstalk时,我收到以下错误:
Command failed on instance. Return code: 1 Output: (TRUNCATED)... manual that corresponds to your MySQL server version for the right syntax to use near 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED' at line 1")
我还试着把这句话改成:
SET default_storage_engine=INNODB, SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
结果是一样的
知道可能出了什么问题吗?或者我可以使用的另一种解决方案(也许我可以只运行这个命令并将其设置为全局隔离级别?)
3条答案
按热度按时间sigwle7e1#
也许
OPTIONS
不能处理两个命令。所以删除第一个命令--它只在创建一个新表时有用。而且可能需要在任何CREATE TABLEs
上指定ENGINE=InnoDB
。无论如何,我希望AWS默认为这样。8.0有这个引擎默认值。e4yzc0pl2#
你能试试下面这样吗,任何人都应该工作。
kqhtkvqz3#
对于MySQL,您将能够通过在
settings.py
中运行原始查询来设置和检查READ COMMITTED
,如下所示:settings.py
在每次Django Server使用下面的命令运行或每次Django Server通过编写代码重新加载时运行,因此事务在每次Django Server使用下面的命令运行或每次Django Server通过编写代码重新加载时设置:对于使用PostgreSQL的我来说,下面
"OPTIONS": {}
中的"init_command": ...
和"isolation_level"
不起作用,所以我无法在settings.py
中设置SERIALIZABLE
: