SQL
var sql = "select max(version) as version, id, " +
" tenant,type, name, format, default_value, multi_line, max_length, min_length, formula " +
" from imcs_field_string_definitions " +
" where id = 11 group by id"
エラー
エラー1055:SELECTリストの式#3は、GROUP BY句ではなく、GROUP BY句の列に機能的に依存しない非集約列「imcs.imcs_field_string_definitions.tenant」が含まれています。これはsql_modeの= ONLY_FULL_GROUP_BYと互換性がありません。
理由:
それぞれの再起動時にメイン、データベース設定を再初期化し
、各再起動の主なニーズが初期化されるようにした後、実行します。
select @@sql_mode;
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
最適化されたコードの後
// leimin, 批量查询最大版本的定义数据
func MaxVersionDefinition(db *gorm.DB, ids []string, tenant string) (maxModels []FieldStringDefinition, err error) {
db.Exec("SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))")
var sql = " select max(version) as version, id, " +
" tenant,type, name, format, default_value, multi_line, max_length, min_length, formula " +
" from imcs_field_string_definitions " +
" where 1=1 ${ids} and tenant= ${tenant} " +
" group by id "
idsStr, err := concatString(ids)
sql = strings.Replace(sql, "${ids}", idsStr, -1)
sql = strings.Replace(sql, "${tenant}", tenant, -1)
db = db.Raw(sql)
db = db.Scan(&maxModels)
return maxModels, db.Error
}