mysql事務失效 MYSQL事務處理失效原因

2021-10-18 06:54:01 字數 1185 閱讀 2162

mysql有多種儲存引擎,有些版本(mysql5.5.5以前預設是myisam,mysql5.5.5以後預設是innodb)安裝時預設的儲存引擎是myisam,而myisam儲存引擎是不支援事務處理的,所以才導致了專案中service層的某個方法事務失效,解決的方法就是將需要事務管理的表的儲存引擎改為innodb,下面將詳細說明mysql的幾種儲存引擎以及如何修改儲存引擎:

一、檢視mysql資料庫所支援的儲存引擎

show engines;

也可以使用下面語句來檢視mysql預設的儲存引擎:

show variables like 'storage_engine';

二、修改儲存引擎

1、修改mysql預設儲存引擎為innodb,關閉mysql服務:mysql找到mysql安裝目錄下的my.ini檔案:找到default-storage-engine=myisam 改為default-storage-engine=innodb找到skip-innodb 改為#skip-innodb,即注釋掉該行,skip-innodb為忽略innodb的意思,此處需要開啟innodb,故需要把它注釋啟動mysql服務:net start mysql;

2、linux:備份my.cnf

cd /etc

cp my.cnf my.cnf_bak

修改my.cnf

[mysqld] 後加入

vi my.cnf

default-storage-engine=innodb

刪除/mysql/data目錄下的ib_logfile0,ib_logfile1

否則在啟動mysql時會遇到下述錯誤:

[error] plugin 'innodb' init function returned error.

[error] plugin 'innodb' registration as a storage engine failed.

[error] unknown/unsupported table type: innodb

[error] aborting

啟動mysql

cd /home/administrator/mysql

bin/mysqld_safe -user=root &

登入mysql檢查修改是否成功

mysql -h ip -u root -p

mysql>show engines;

mysql索引失效 常見mysql索引失效條件

使用索引的一般語句 1 where條件中有or,除非or的所有欄位都有索引,只要有乙個沒有索引,就不走索引 explain select from jf user ju where ju.user id or ju.superior1 yyy user id是主鍵,superior1是普通索引,結果...

mysql 主鍵失效 MySQL索引(索引失效)

索引 索引也是一張表,該錶儲存了主鍵與索引字段,並指向實體表的記錄。myisam儲存引擎,資料檔案 索引檔案 表結構檔案分開儲存 innodb儲存引擎,資料和索引儲存在乙個檔案中 b tree索引 hash索引 hash索引 只有memory儲存引擎支援 查詢一條記錄的速度非常快 b tree索引 ...

mysql 索引失效場景 Mysql 索引失效場景

例如 一張user表 有欄位屬性 name,age 其中name為索引 下面列舉幾個索引失效的情況 1.select from user where name xzz or age 16 例如這種情況 當語句中帶有or的時候 即使有索引也會失效。2.select from user where na...