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()
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章