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...