MySQLデータベース,@Transationalタグが無効な理由と処理方法

1668 ワード

理由1:
MySQLのデフォルトの操作モードはautocommit自動コミットモードです.現在のautocommitモードを表示するには、次のコマンドを使用します.
show variables  'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+
set autocommit=0; 

0=OFF ,1=ON
理由2:MySQLのデフォルトのストレージエンジンはMyISAMであり、MyISAMのストレージエンジンはトランザクションをサポートしていないため、autocommitを変更しても何の役にも立たない.テーブルを作成するときは、ストレージエンジンがInnoDBであるかどうかを確認します.修正方法でなければ、次の2つがあります.Function 1.直接修正する.データが多い場合は遅く、修正時に読み取り性能に影響します.table_nameは操作のテーブルで、innoDBは新しいストレージエンジンです.
ALTER TABLE table_name ENGINE=InnoDB

Function2.2段階に分けて修正する.Step 1:テーブルを作成し、元のテーブルをコピーし、ストレージエンジンをターゲットエンジンに変更します.
CREATE TABLE t_temp_table LIKE table_name;
ALTER TABLE t_temp ENGINE=InnoDB;
step2:          
INSERT INTO t_temp SELECT * FROM table_name;