MariaDB事务仅提交最后一次插入

问题描述 投票:0回答:1

我使用的是MariaDB 10.4.8,交易存在问题。问题:

START TRANSACTION;
INSERT INTO zone (code) VALUES ('test1');
INSERT INTO zone (code) VALUES ('test2');
COMMIT;

例如,如果我执行这样的事务,则仅插入test2条记录。到底发生了什么,也许我需要配置一些东西。使用DB时,我无法正确使用Doctrine的persist()/flush()功能。

database transactions doctrine mariadb
1个回答
0
投票

如果MariaDB 10.x服务器缺少某些(或全部)统计表mysql.table_statsmysql.index_statsmysql.column_stats,则会发生上述问题。

丢失表的最可能原因是实例已从MariaDB 5.5升级或已从MySQL或Percona服务器交叉升级,并且mysql_upgrade未运行或未成功。您甚至可能没有意识到实例以前曾经有旧服务器,特别是如果它是作为另一产品的一部分安装的。

[另一种可能性是,某些第三方产品会安装一个预先创建的数据库,并且该数据库是使用服务器版本而不是统计表来预先创建的。

在任何情况下,在此类数据库上启动的服务器在启动时可能会在错误日志中抱怨mysql.event表的结构错误以及其他一些丢失的表。但是,在软件包安装中,错误日志通常默认情况下写入/var/log/messages/var/log/syslog,因此通常会忽略非致命错误。

[MDEV-20354中跟踪了此错误。

同时,解决方案是运行mysql_upgrade(必要时使用--force)。

© www.soinside.com 2019 - 2024. All rights reserved.