forked from mirror/gorm
Include table_schema when query from INFORMATION_SCHEMA for mysql
This commit is contained in:
parent
66e6c9af9f
commit
6dc332e04d
17
mysql.go
17
mysql.go
|
@ -2,6 +2,7 @@ package gorm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"reflect"
|
"reflect"
|
||||||
)
|
)
|
||||||
|
@ -68,10 +69,21 @@ func (s *mysql) Quote(key string) string {
|
||||||
return fmt.Sprintf("`%s`", key)
|
return fmt.Sprintf("`%s`", key)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *mysql) databaseName(scope *Scope) string {
|
||||||
|
from := strings.Index(scope.db.parent.source, "/") + 1
|
||||||
|
to := strings.Index(scope.db.parent.source, "?")
|
||||||
|
if to == -1 {
|
||||||
|
to = len(scope.db.parent.source)
|
||||||
|
}
|
||||||
|
return scope.db.parent.source[from:to]
|
||||||
|
}
|
||||||
|
|
||||||
func (s *mysql) HasTable(scope *Scope, tableName string) bool {
|
func (s *mysql) HasTable(scope *Scope, tableName string) bool {
|
||||||
var count int
|
var count int
|
||||||
newScope := scope.New(nil)
|
newScope := scope.New(nil)
|
||||||
newScope.Raw(fmt.Sprintf("SELECT count(*) FROM INFORMATION_SCHEMA.tables where table_name = %v", newScope.AddToVars(tableName)))
|
newScope.Raw(fmt.Sprintf("SELECT count(*) FROM INFORMATION_SCHEMA.tables where table_name = %v AND table_schema = %v",
|
||||||
|
newScope.AddToVars(tableName),
|
||||||
|
newScope.AddToVars(s.databaseName(scope))))
|
||||||
newScope.DB().QueryRow(newScope.Sql, newScope.SqlVars...).Scan(&count)
|
newScope.DB().QueryRow(newScope.Sql, newScope.SqlVars...).Scan(&count)
|
||||||
return count > 0
|
return count > 0
|
||||||
}
|
}
|
||||||
|
@ -79,7 +91,8 @@ func (s *mysql) HasTable(scope *Scope, tableName string) bool {
|
||||||
func (s *mysql) HasColumn(scope *Scope, tableName string, columnName string) bool {
|
func (s *mysql) HasColumn(scope *Scope, tableName string, columnName string) bool {
|
||||||
var count int
|
var count int
|
||||||
newScope := scope.New(nil)
|
newScope := scope.New(nil)
|
||||||
newScope.Raw(fmt.Sprintf("SELECT count(*) FROM information_schema.columns WHERE table_name = %v AND column_name = %v",
|
newScope.Raw(fmt.Sprintf("SELECT count(*) FROM information_schema.columns WHERE table_schema = %v AND table_name = %v AND column_name = %v",
|
||||||
|
newScope.AddToVars(s.databaseName(scope)),
|
||||||
newScope.AddToVars(tableName),
|
newScope.AddToVars(tableName),
|
||||||
newScope.AddToVars(columnName),
|
newScope.AddToVars(columnName),
|
||||||
))
|
))
|
||||||
|
|
Loading…
Reference in New Issue