2 回答

TA貢獻1934條經(jīng)驗 獲得超2個贊
該文件說:
單個連接實例及其所有派生對象(準備好的語句、備份操作等)不能在沒有外部同步的情況下從多個 goroutine 同時使用。
(這是一個不同的 SQLite 驅(qū)動程序,但此限制也適用于您的。)
使用 goroutine 時,必須使用單獨的數(shù)據(jù)庫連接。
默認情況下,SQLite 在遇到被另一個事務鎖定的數(shù)據(jù)庫時會立即中止。為了允許更多的并發(fā),您可以通過設置繁忙超時來告訴它等待另一個事務完成。
使用BusyTimeout函數(shù),如果你的 SQLite 驅(qū)動有它,或者直接執(zhí)行PRAGMA busy_timeout SQL 命令。

TA貢獻1876條經(jīng)驗 獲得超7個贊
請發(fā)布更多您的代碼,以便我們可以更全面地了解發(fā)生了什么。
但是,這里有一些想法。Golang 默認池數(shù)據(jù)庫連接(雖然,CENTOS 似乎可能不是......)。此外,您的程序正在“暫?!?,因為它正在等待來自數(shù)據(jù)庫連接池的打開連接。如果您希望程序的其余部分在此期間繼續(xù)運行,您應該將其作為異步函數(shù)運行 -在此處查看goroutines。這將有效地導致您的程序按照您的需要排隊,因為連接將按照它們可用時請求的順序進行分配。如果您對內(nèi)部結構感興趣,請在此處閱讀更多內(nèi)容。
如果您需要一些關于 goroutine 外觀的代碼片段,請告訴我們。
- 2 回答
- 0 關注
- 458 瀏覽
添加回答
舉報