mysql Cant create more than max_prepared_stmt_count statements錯誤

錯誤原因

當緩存的預編譯SQL數量超過默認最大值時 就會產生如上錯誤 導致數據庫直接無法使用

檢查

查詢數據庫預編譯SQL創建次數

show global status like 'com_stmt%';

在這裏插入圖片描述
每個連接創建的預編譯語句有限, 需要着重檢查是否出現動態
測試代碼:

func TestPrepare(t *testing.T) {
	var wg sync.WaitGroup
	txn := sql.TxOptions{sql.LevelDefault,false}
	tx, err := db.BeginTx(context.Background(),&txn)
	painc_err(err)
	for i := 0; i < 100000; i++ {
		wg.Add(1)
		go func() {
			stmt, err :=tx.Prepare("insert into actor(date,name) values(?,?)")
			painc_err(err)
			defer stmt.Close()
			time.Sleep(time.Second)
			wg.Done()
		}()
	}
	wg.Wait()
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章