如何在Aria(MariaDB)中启用交易?

时间:2013-12-06 17:59:48

标签: mysql sql transactions mariadb

我是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

1 个答案:

答案 0 :(得分:1)

Aria存储引擎目前不是事务性的。来自MariaDB site

  

TRANSACTIONAL仅适用于Aria表。在将来使用此选项创建的Aria表将是完全事务性的,但目前这提供了一种崩溃保护形式。

Aria计划在未来进行交易,但不是优先事项。同样来自MariaDB site

  

目前,Aria 2.0暂停,因为开发人员正致力于改进MariaDB。

如果您需要一个表是事务性的,请使用InnoDB存储引擎(实际上是XtraDB)。如果要替换需要事务的现有安装,则旧表必须是InnoDB,因为MyISAM是非事务性的。