程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql的設置自動提交失效問題

mysql的設置自動提交失效問題

編輯:MySQL綜合教程


工作幾年了基本沒用過mysql,悲催哈。。。今天在搞個小東西的時候用到mysql。一個很簡單的問題,搞了幾個小時,看來無知還是比較可怕的。。 進入正題吧。 問題很簡單 JDBC 連接mysl 獲取connnection 然後conn.setAutoCommit(false); 重點來了 現在是要插入一條記錄 inset1......然後做一些邏輯處理,更新另一條數據 update2.。。 最後conn.commit();當然catche裡面還有 conn.rollback()。 DEBUG時候發現 insert1執行完,數據庫已經有值了。。原以為是隔離級別的問題,沒在意。然後繼續執行邏輯處理, 出現異常conn.reollback()了。。此時再一看 插入的數據沒有回滾。代碼檢查N次沒查出問題。 無奈又要問度娘,谷爺。。。此段時間乃是煎熬啊~~~~  www.2cto.com   最後還是有成果的。找到了個mysql表存儲引擎的文章。   show create table 表名;

  可以看到ENGINE=MyISAM MyISAM是指Mysql的默認存儲引擎,當create創建新表時,未指定新表的存儲引擎時,默認使用Myisam。 MyISAM管理非事務表。它提供高速存儲和檢索,以及全文搜索能力 既然有非事務表,就應該有支持事務的表了。沒錯,度娘又告訴我了 InnoDB InnoDB存儲引擎提供了具有提交、回滾和崩潰恢復能力的事務安全。但是對比Myisam的存儲引擎,InnoDB寫的處理效率差一些並且會占用更多的磁盤空間以保留數據和索引。  那就改吧。。   alter table 表名 engine=InnoDB;  然後再查看一下

  變成InnoDB了。。 再跑次程序。。沒錯回滾了 。。。 很小個問題。。。。但如果不了解Mysql的話也挺頭痛的。。搞了幾個小時。。。無知就是悲催哈。。。。  
  作者 北京—王志偉

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved