例如,我想要完成如下查询
show global variables like 'read_only';
目前我操作下来发现:
gorm.Open(...) 时需要指定 database ,而在仅需要查询系统变量的时候,本可以不指定这个的(但这个不算问题吧,我可以随便指定一个,不影响系统变量的查询)db.Raw("show global variables like 'read_only'").Scan(&result) 的形式获取系统变量的值,但我不知道如何定义这个 result 结构;请问这种查询应该如何操作,能否提供一个示例程序?多谢
type sqlVariables struct {
SQLMode string `gorm:"column:SQLMode"`
}
var variables sqlVariables
err := db.Raw("select @@sql_mode as SQLMode").Scan(&variables).Error
if err != nil {
//todo
}
fmt.Println("SQLMode:" + variables.SQLMode)
//output
//SQLMode:NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
type sqlVariables struct { SQLMode string `gorm:"column:SQLMode"` } var variables sqlVariables err := db.Raw("select @@sql_mode as SQLMode").Scan(&variables).Error if err != nil { //todo } fmt.Println("SQLMode:" + variables.SQLMode) //output //SQLMode:NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
show commandtype sqlVariables struct {
VariableName string `gorm:"column:Variable_name"`
VariableValue string `gorm:"column:Value"`
}
var variables []sqlVariables
sql := `show global variables like 'read_only'`
err := db.Raw(sql).Scan(&variables).Error
if err != nil {
//todo
}
fmt.Printf("sqlVariables:\n%+v\n", variables)
//output
//sqlVariables:
//[{VariableName:read_only VariableValue:OFF}]
A new way with Pluck method:
var values []string
err := db.Raw("select @@global.sql_mode as value").Pluck("value", &values).Error
if err != nil {
//todo
}
fmt.Println("SQLMode:" + variables[0])
Most helpful comment
showcommand