我是MySQL和MariaDB的新手。我用mariadb替换了mysql并且遇到了事务问题。
MariaDB [(none)]> show engines;
+--------------------+---------+--------------+------+------------+
| Engine | Support | Transactions | XA | Savepoints |
+--------------------+---------+--------------+------+------------+
| MyISAM | YES | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | NO | NO | NO |
| Aria | YES | NO | NO | NO |
| InnoDB | DEFAULT | YES | YES | YES |
+--------------------+---------+--------------+------+------------+
MariaDB [(none)]> create table test (id INT) ENGINE=ARIA TRANSACTIONAL=1
BEGIN;
INSERT INTO test VALUES (1);
ROLLBACK;
WARNING:some non-transactional changed tables couldn't be rolled back
答案 0 :(得分:1)
Aria存储引擎目前不是事务性的。来自MariaDB site:
Aria计划在未来进行交易,但不是优先事项。同样来自MariaDB site:TRANSACTIONAL仅适用于Aria表。在将来使用此选项创建的Aria表将是完全事务性的,但目前这提供了一种崩溃保护形式。
目前,Aria 2.0暂停,因为开发人员正致力于改进MariaDB。
如果您需要一个表是事务性的,请使用InnoDB存储引擎(实际上是XtraDB)。如果要替换需要事务的现有安装,则旧表必须是InnoDB,因为MyISAM是非事务性的。