diff --git a/engine.go b/engine.go index 4581b3e1..fcfdb8fc 100644 --- a/engine.go +++ b/engine.go @@ -784,13 +784,19 @@ func (engine *Engine) IsTableEmpty(bean interface{}) (bool, error) { // If a table is exist func (engine *Engine) IsTableExist(bean interface{}) (bool, error) { v := rValue(bean) - if v.Type().Kind() != reflect.Struct { + var tableName string + if v.Type().Kind() == reflect.String { + tableName = bean.(string) + } else if v.Type().Kind() == reflect.Struct { + table := engine.autoMapType(v) + tableName = table.Name + } else { return false, errors.New("bean should be a struct or struct's point") } - table := engine.autoMapType(v) + session := engine.NewSession() defer session.Close() - has, err := session.isTableExist(table.Name) + has, err := session.isTableExist(tableName) return has, err } diff --git a/examples/sync.go b/examples/sync.go index ad28ad80..d108e455 100644 --- a/examples/sync.go +++ b/examples/sync.go @@ -88,6 +88,17 @@ func main() { _, err = Orm.Insert(user) if err != nil { fmt.Println(err) + return + } + + isexist, err := Orm.IsTableExist("sync_user2") + if err != nil { + fmt.Println(err) + return + } + if !isexist { + fmt.Println("sync_user2 is not exist") + return } } } diff --git a/statement.go b/statement.go index f5c122cb..e66a8b13 100644 --- a/statement.go +++ b/statement.go @@ -927,7 +927,7 @@ func (statement *Statement) genGetSql(bean interface{}) (string, []interface{}) func (s *Statement) genAddColumnStr(col *core.Column) (string, []interface{}) { quote := s.Engine.Quote - sql := fmt.Sprintf("ALTER TABLE %v ADD COLUMN %v;", quote(s.TableName()), + sql := fmt.Sprintf("ALTER TABLE %v ADD %v;", quote(s.TableName()), col.String(s.Engine.dialect)) return sql, []interface{}{} }