成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

PDO擴(kuò)展PDO::ATTR_AUTOCOMMIT 出坑記

Binguner / 1162人閱讀

摘要:?jiǎn)栴}描述我自己以擴(kuò)展為基礎(chǔ),封裝了一個(gè)異步任務(wù)服務(wù)器框架,數(shù)據(jù)庫操作使用擴(kuò)展,但是在插入數(shù)據(jù)的時(shí)候,出現(xiàn)了異常情況,具體狀況如下表引擎的正常插入,沒有問題表引擎查詢都可以的,但是插入失敗,出現(xiàn)回滾現(xiàn)象,字段變化,表的變化,正常返回解決過程監(jiān)

問題描述

我自己以swoole擴(kuò)展為基礎(chǔ),封裝了一個(gè)異步任務(wù)服務(wù)器框架,數(shù)據(jù)庫操作使用pdo擴(kuò)展,但是在插入數(shù)據(jù)的時(shí)候,出現(xiàn)了異常情況,具體狀況如下:

MyISAM 表引擎的insert正常插入,沒有問題

Innodb表引擎查詢都可以的,但是插入失敗,出現(xiàn)回滾現(xiàn)象,auto_increment字段變化,表的rows變化,lastInsertId正常返回

解決過程

監(jiān)控mysql日志,查看狀態(tài)
進(jìn)入mysql命令行,查看mysql的general-log狀態(tài)

show global variables like "%genera%";

如果沒有開啟,執(zhí)行如下命令

;general_log_file_path修改為自己象牙iode
set global general_log_file="general_log_file_path";
set global general_log=on

然后監(jiān)控日志,發(fā)現(xiàn)insert語句發(fā)送到mysql端了

查看innodb engine狀態(tài)
懷疑是不是死鎖了,查看innodb 的狀態(tài)

 show engine innodb status;

沒有發(fā)現(xiàn)異常
到這里,已經(jīng)有些抓狂了
然后google,各種嘗試,都不得要領(lǐng)

柳暗花明

糾結(jié)了挺長時(shí)間,后來看到有人說innodb引擎把insert當(dāng)作一個(gè)事物處理,瞬間想到了一個(gè)問題,是不是pdo擴(kuò)展里面,沒有自動(dòng)提交?
直接寫了個(gè)簡(jiǎn)單的mysql pdo 連接數(shù)據(jù)庫,并且插入數(shù)據(jù)到innodb表里面,結(jié)果沒有任何問題,成功了,然后我就想到pdo里面有個(gè)參數(shù)PDO::ATTR_AUTOCOMMIT,是不是他在作怪?
使用getAttribute(PDO::ATTR_AUTOCOMMIT)) 獲取他的值,打印,發(fā)現(xiàn)是1,證明是自動(dòng)提交事務(wù)的
然后在我封裝的框架里面,我打印了他的值,發(fā)現(xiàn)是0,問題找到
那么,在插入的時(shí)候,如何提交事務(wù)?

連接數(shù)據(jù)庫的時(shí)候,options里面設(shè)置 PDO::ATTR_AUTOCOMMIT 為 1

插入操作的時(shí)候,自己執(zhí)行commit,顯式的完成一次事務(wù),我采用了這個(gè)方法

遺留問題是,同樣的PHP版本,為啥多帶帶的連接 PDO::ATTR_AUTOCOMMIT為1 ,在啟動(dòng)的swoole-httpserer里面是0,我沒有繼續(xù)深入。

總結(jié)

解決問題一定要持之以恒,不要放棄,那么問題最終會(huì)獲得比較理想的處理結(jié)果

另外要注意方法,嘗試不同的思路,我就是一直沒有想到可能是事務(wù)自動(dòng)提交導(dǎo)致的,以至于浪費(fèi)了很多時(shí)間

最后,希望goolge不要被封鎖的這么嚴(yán)重,媽的,百度 必應(yīng)搜索結(jié)果完全沒法和google比,程序員,離不開google

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/21102.html

相關(guān)文章

  • PHP 數(shù)據(jù)庫操作

    摘要:操作數(shù)據(jù)庫的種形式使用擴(kuò)展類庫推薦使用擴(kuò)展類庫這是類庫的升級(jí)版,但已經(jīng)不推薦使用擴(kuò)展包含哪三個(gè)類與區(qū)別可以支持多種數(shù)據(jù)庫,而且操作方法一致只支持?jǐn)?shù)據(jù)庫如何使用連接數(shù)據(jù)庫什么是如何關(guān)閉連接通過來連接數(shù)據(jù)庫,其中必須傳入數(shù)據(jù)源名稱數(shù)據(jù)源名稱是 PHP操作數(shù)據(jù)庫的2種形式 使用 PDO 擴(kuò)展類庫(推薦) 使用 Mysqli 擴(kuò)展類庫(這是Mysql類庫的升級(jí)版,但已經(jīng)不推薦使用) PDO...

    Jingbin_ 評(píng)論0 收藏0
  • IndexedDB使用與出坑指南

    摘要:在不指定的情況下,默認(rèn)版本號(hào)為。具體示例如下在需要更新數(shù)據(jù)庫的模式時(shí),需要更新版本號(hào)。此時(shí)我們指定一個(gè)高于之前版本的版本號(hào),就會(huì)觸發(fā)事件。數(shù)據(jù)操作事務(wù)在中,我們也能夠使用事務(wù)來進(jìn)行數(shù)據(jù)庫的操作。 概述 本文通過對(duì)IndexedDB的使用方法和使用場(chǎng)景進(jìn)行相關(guān)介紹,對(duì)常見的問題進(jìn)行解答。 同時(shí),因?yàn)镸DN中的相關(guān)文檔缺乏相關(guān)邏輯性,所以不容易理解。本文將通過項(xiàng)目中常見的數(shù)據(jù)存儲(chǔ)和操作需求...

    陳偉 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<