Your Question

Sometimes it happens: 1. commands out of sync. You can't run this command now 2. busy buffer

go version: go1.16.3 windows/amd64

gorm version: gorm.io/driver/mysql v1.0.5 gorm.io/gorm v1.21.6

mysql version: 8.0.25(docker for windows)

code: Gorm commands out of sync. You can't run this command now

result: Gorm commands out of sync. You can't run this command now

The document you expected this should be explained

Expected answer

Comment From: quhaowk

It happened in win10

Comment From: wangdongpei

I meet the same question ,with a long word on sql world "in"

Comment From: wangdongpei

SELECT count(1) FROM orders left join gd_orders on orders.order_no=gd_orders.order_no WHERE (orders.channel = '368') AND (orders.status in (10,19,20,30,40)) AND (gd_orders.sale_uid in (2,3,4,5,6,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,82,83,84,85,86,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,158,163,164,165,166,167,168,169,170,171,172,173,174,177,178,179,180,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,272,273,274,275,276,277,278,280,281,283,284,285,286,287,288,289,290,291,292,295,296,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,373,374,375,376,377,378,379,380,381,382,384,385,386,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,442,443,445,447,448,449,451,453,454,455,456,457,458,459,460,461,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,485,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,562,563,564,565,566,567,568,569,570,571,572,573,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,597,598,599,600,601,602,603,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,631,632,633,634,635,636,637,638,640,641,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,680,681,682,683,685,687,688,689,690,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,715,716,717,719,721,722,723,724,725,727,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,760,761,762,764,765,766,768,771,772,773,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,791,792,793,794,795,796,797,798,799,800,802,804,805,807,811,817,818,820,822,824,825,826,827,828,829,831,832,835,836,837,838,839,840,841,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878)) AND (orders.pay_time >= '2021-06-18 00:00:00') AND (orders.pay_time <= '2021-06-18 23:59:59') AND (orders.create_time >= 1623974400)

Comment From: github-actions[bot]

This issue has been automatically marked as stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 30 days

Comment From: vincentzhwg

have solution ??

Comment From: xiaziheng98

I meet the same question ,with a long word on sql world "in" have solution ??

Comment From: wangdongpei

来信收到

Comment From: wangdongpei

我是在阿里的adb中遇到这个问题的,mysql中正常,gorm里面有一个把结构体查询转换成sql命令的方法叫做trydo还是什么来着,然后用sql命令调用就正常了,你可以试一下能否解决问题

Comment From: jinzhu

and don't use goroutine for transaction.

Comment From: xiaziheng98

我是在阿里的adb中遇到这个问题的,mysql中正常,gorm里面有一个把结构体查询转换成sql命令的方法叫做trydo还是什么来着,然后用sql命令调用就正常了,你可以试一下能否解决问题

多谢回答

Comment From: wangdongpei

解决了吗

Comment From: xiaziheng98

解决了吗

解决了,我也是用gorm在阿里adb里遇到的这个问题,in查询数量太多;先从gorm里获取到拼装好的sql语句,然后用go原生sql查询方法调用的

Comment From: wangdongpei

来信收到

Comment From: DreamerLWJ

关于阿里云 ADB MySQL gorm 执行的出现 commands out of sync 的简单解决方案

var res Res
sql := adb.Raw(testSql, ids).ToSQL(func(tx *gorm.DB) *gorm.DB {
    return tx
})
err = adb.Raw(sql).Scan(&res).Error
if err != nil {
    ...
}

比如 testSql 使用 in 条件,而 ids 内容较多,可以使用 ToSQL 拿到执行的 sql,然后再 Raw 一次。 类似的批量 update 如果 batch 稍微多一点使用 gorm 也会报错,也可以使用该解决方案

解决了吗

解决了,我也是用gorm在阿里adb里遇到的这个问题,in查询数量太多;先从gorm里获取到拼装好的sql语句,然后用go原生sql查询方法调用的

Comment From: attson

关于阿里云 ADB MySQL gorm 执行的出现 commands out of sync 的简单解决方案

go var res Res sql := adb.Raw(testSql, ids).ToSQL(func(tx *gorm.DB) *gorm.DB { return tx }) err = adb.Raw(sql).Scan(&res).Error if err != nil { ... }

比如 testSql 使用 in 条件,而 ids 内容较多,可以使用 ToSQL 拿到执行的 sql,然后再 Raw 一次。 类似的批量 update 如果 batch 稍微多一点使用 gorm 也会报错,也可以使用该解决方案

解决了吗

解决了,我也是用gorm在阿里adb里遇到的这个问题,in查询数量太多;先从gorm里获取到拼装好的sql语句,然后用go原生sql查询方法调用的

同样阿里云adb. 已解决。报的错是 commands out of sync. Did you run multiple statements at once? 。