l-hoteldb11.h.cn6:3307/zyj_msg, 對於剛寫入的資料,查詢不到結果
transaction_isolation = repeatable-read
先執行資料更新和插入語句, 如下:
set autocommit=0
insert into exclude_monitor (codebase, hotelseq, roomid, roomname, checkindate, checktime, expiretime, status, updatetime) values ('wiqunarqta2','guangzhou_9930','471701_127488','豪華單人間(預留房1
8:00過時自動關房無效)-豪華單','2015-03-28',1427203789488,1427290189488,'0',(unix_timestamp()+1)*1000) on duplicate key update checktime=values(`checktime`),roomname=values(`roomname`),status=values(`status`),expiretime=values(`ex
piretime`),updatetime=((unix_timestamp()+1)*1000)
commit
然後過10秒左右去查詢, 如下:
select id,codebase,hotelseq,roomid,roomname,checkindate,checktime,expiretime,status from exclude_monitor where updatetime>=1427203770091 and updatetime<1427203780091
程式查不到結果, 但是手動去資料庫查就能查到結果
對於此類問題, 剛開始的時候懷疑select語句包含在事務中,執行了類似下面的邏輯
執行緒1, 拿到乙個資料庫連線, 開啟乙個事務(autocommit=0), 執行任務,未提交, 就將執行緒歸還到執行緒池
執行緒2, 拿到另乙個資料庫連線, 開啟乙個事務, 執行任務, 即insert操作,提交後, 將執行緒歸還到執行緒池
執行緒3, 拿到執行緒1用過的連線, 因為這個事務未提交, 而且是在insert之前開啟的事務, 所以它來執行查詢, 查不到執行緒2所插入的資料
排查過程中, 開發一直肯定, 語句的事務提交了, select中沒有事務, 在此, 用下面這句話"勸說"比較合適
shuai.lou(婁帥) 03-25 15:05:54
一定不要相信自己寫的**和所謂的框架
shell查詢MySQL並將結果寫入檔案中
找到你的php.ini檔案,一般在 usr local php etc php.ini,開啟 查詢到 disable functions 刪除需要使用的函式名,如下 disable functions phpinfo,eval,passthru,exec,system,chroot,scandir,...
mybatis 中文條件查詢沒結果的問題
執行環境 win10 mysql版本 mysql5.7免安裝版 或解壓版 今天在學習mysql字符集有關亂碼的知識 然後發現了latin1的字符集編碼格式,雖然命令列視窗改變很容易,只需兩行命令 set character set database utf8 set character set se...
對jdbcTemplated查詢後的結果進行處理
對jdbctemplated查詢後的結果進行處理 string sql select work for building ids from face sign contract woker string a jdbctemplate.queryforobject sql,string.class 用...