当我使用django来设计一个网站并删除时,我发现如果我使用format:STATEMENT). ( MySQL )来激活Binlog,我会遇到一些麻烦。
下面是我对此部署的设置:
第一步,我需要将我的模型迁移到数据库,所以我输入如下:
python manage.py migrate像这样回溯:
django.db.utils.OperationalError: (1665, 'Cannot execute statement: impossible
to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table
uses a storage engine limited to row-based logging. InnoDB is limited to row-
logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.')在互联网上搜索之后,我知道修复它的一种方法是改变Binlog格式,这是非常适合我的。
但是,如果我不想更改Binlog配置,我仍然想知道如何修复它。我认为Django可以支持Binlog的这种格式。
发布于 2018-11-27 05:11:18
我遇到了一个类似的问题,并通过将隔离级别更改为“可重复读取”来修复它。您真的只需要它来应用迁移,那么您可能就可以(?)把它移开。在settings.py中,我将数据库设置更改为:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db_name',
'USER': 'db_user',
'PASSWORD': 'db_password',
'HOST': 'db_host',
'PORT': 'db_port',
'CONN_MAX_AGE': db_conn_max_age,
'OPTIONS': {
'isolation_level': "repeatable read",
},
}
}然后运行python manage migrate,然后删除OPTIONS条目。注意这些风险。
发布于 2018-03-16 13:03:42
您能否尝试将Binlog格式设置为行?
为设置格式,请使用此,
mysql> SET GLOBAL binlog_format = 'ROW';之后,使用下面的查询来确认
mysql> show variables like 'binlog_format';发布于 2018-03-17 03:40:17
经过昨天的搜索,我得到了这个问题的一个夏季解决方案。
my.cnf。
在my.cnf中,您需要添加log_bin=mysql-bin并根据您的选择设置bin_format=ROW或binformat=MIXED。然后,您需要重新启动Mysql服务。这将永远有效。
show engines;
您可以更改默认存储引擎。my.cnf中,应在[mysqld]之后插入default-storage-engine=INNODB,并记住必须插入server-id=1,此数字用于识别主机。不做使其他主机有相同的编号。
虽然有两种方法来解决问题,但我认为没有最好的解决办法。如果有人有更好的答案不修改my.cnf,请告诉我。
https://stackoverflow.com/questions/49312705
复制相似问题