MySQLデータベース,@Transationalタグが無効な理由と処理方法
1668 ワード
理由1:
MySQLのデフォルトの操作モードはautocommit自動コミットモードです.現在のautocommitモードを表示するには、次のコマンドを使用します.
0=OFF ,1=ON
理由2:MySQLのデフォルトのストレージエンジンはMyISAMであり、MyISAMのストレージエンジンはトランザクションをサポートしていないため、autocommitを変更しても何の役にも立たない.テーブルを作成するときは、ストレージエンジンがInnoDBであるかどうかを確認します.修正方法でなければ、次の2つがあります.Function 1.直接修正する.データが多い場合は遅く、修正時に読み取り性能に影響します.table_nameは操作のテーブルで、innoDBは新しいストレージエンジンです.
Function2.2段階に分けて修正する.Step 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;