事务在mysql中不工作
我的SQL代码是:事务在mysql中不工作,mysql,sql,transactions,Mysql,Sql,Transactions,我的SQL代码是: SET AUTOCOMMIT=0; START TRANSACTION; BEGIN; INSERT INTO utente(nomeutente) VALUES('pippobaudo'); INSERT INTO fonti(id_fonte, id_esame) VALUES (4, 28); COMMIT; 第一个INSERT是正确的,但是第二个不正确,因为我想测试事务。MySQL理解并在第二次插入中生成一个错误,但令人难以置信的是,它不尊重事务并在我的数据库中插入
SET AUTOCOMMIT=0;
START TRANSACTION;
BEGIN;
INSERT INTO utente(nomeutente) VALUES('pippobaudo');
INSERT INTO fonti(id_fonte, id_esame) VALUES (4, 28);
COMMIT;
第一个INSERT
是正确的,但是第二个不正确,因为我想测试事务。MySQL理解并在第二次插入中生成一个错误,但令人难以置信的是,它不尊重事务并在我的数据库中插入“pippobaudo”
请帮帮我
谢谢MyISAM引擎不支持事务:
mysql> show engines;
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO |
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
将IGNORE添加到INSERT,强制生成警告而不是事务中的错误
SET AUTOCOMMIT=0;
START TRANSACTION;
BEGIN;
INSERT IGNORE INTO utente(nomeutente) VALUES('pippobaudo');
INSERT IGNORE INTO fonti(id_fonte, id_esame) VALUES (4, 28);
COMMIT;
注意:MyISAM可以在事务中完成,但它不是完整的实现,这意味着您无法撤消更改(回滚)您的表是MyISAM吗?
COMMIT
是否执行?是的,我的TEBLE是MyISAM!我不明白你的第二个问题,你把它标记为PHP。请您也添加您正在使用的PHP代码好吗?对不起,我删除了tagOh my Good | | |如何解决我的问题?请使用支持事务的引擎:InnoDB。这是最新版本中的默认设置。