diff --git a/engine.go b/engine.go index 51d750aa..cdb2b541 100644 --- a/engine.go +++ b/engine.go @@ -1116,19 +1116,22 @@ func (engine *Engine) Sync2(beans ...interface{}) error { } if oriCol != nil { - if col.SQLType.Name != oriCol.SQLType.Name { - if col.SQLType.Name == core.Text && - oriCol.SQLType.Name == core.Varchar { + expectedType := engine.dialect.SqlType(col) + //curType := oriCol.SQLType.Name + curType := engine.dialect.SqlType(oriCol) + if expectedType != curType { + if expectedType == core.Text && + curType == core.Varchar { // currently only support mysql if engine.dialect.DBType() == core.MYSQL { _, err = engine.Exec(engine.dialect.ModifyColumnSql(table.Name, col)) } else { engine.LogWarnf("Table %s Column %s db type is %s, struct type is %s\n", - table.Name, col.Name, oriCol.SQLType.Name, col.SQLType.Name) + table.Name, col.Name, curType, expectedType) } } else { engine.LogWarnf("Table %s Column %s db type is %s, struct type is %s", - table.Name, col.Name, oriCol.SQLType.Name, col.SQLType.Name) + table.Name, col.Name, curType, expectedType) } } if col.Default != oriCol.Default { diff --git a/mysql_dialect.go b/mysql_dialect.go index 479e6347..b7fdb01b 100644 --- a/mysql_dialect.go +++ b/mysql_dialect.go @@ -60,7 +60,7 @@ func (db *mysql) SqlType(c *core.Column) string { for v, _ := range c.EnumOptions { opts += fmt.Sprintf(",'%v'", v) } - res += strings.TrimLeft(opts,",") + res += strings.TrimLeft(opts, ",") res += ")" case core.Set: //mysql set res = core.Set @@ -69,7 +69,7 @@ func (db *mysql) SqlType(c *core.Column) string { for v, _ := range c.SetOptions { opts += fmt.Sprintf(",'%v'", v) } - res += strings.TrimLeft(opts,",") + res += strings.TrimLeft(opts, ",") res += ")" default: res = t @@ -78,6 +78,11 @@ func (db *mysql) SqlType(c *core.Column) string { var hasLen1 bool = (c.Length > 0) var hasLen2 bool = (c.Length2 > 0) + if res == core.BigInt && !hasLen1 && !hasLen2 { + c.Length = 20 + hasLen1 = true + } + if hasLen2 { res += "(" + strconv.Itoa(c.Length) + "," + strconv.Itoa(c.Length2) + ")" } else if hasLen1 { diff --git a/postgres_dialect.go b/postgres_dialect.go index 61d4f1e2..eec9989b 100644 --- a/postgres_dialect.go +++ b/postgres_dialect.go @@ -177,7 +177,8 @@ WHERE c.relkind = 'r'::char AND c.relname = $1 AND f.attnum > 0 ORDER BY f.attnu if err != nil { return nil, nil, err } - //fmt.Println(args,colName, isNullable, dataType,maxLenStr, colDefault, numPrecision, numRadix,isPK ,isUnique) + + //fmt.Println(args, colName, isNullable, dataType, maxLenStr, colDefault, numPrecision, numRadix, isPK, isUnique) var maxLen int if maxLenStr != nil { maxLen, err = strconv.Atoi(*maxLenStr) @@ -220,7 +221,7 @@ WHERE c.relkind = 'r'::char AND c.relname = $1 AND f.attnum > 0 ORDER BY f.attnu col.Length = maxLen - if col.SQLType.IsText() { + if col.SQLType.IsText() || col.SQLType.IsTime() { if col.Default != "" { col.Default = "'" + col.Default + "'" } else { diff --git a/session.go b/session.go index 009a758a..5d127c74 100644 --- a/session.go +++ b/session.go @@ -996,9 +996,8 @@ func (session *Session) Get(bean interface{}) (bool, error) { err = session.row2Bean(rawRows, fields, len(fields), bean) } return true, err - } else { - return false, nil } + return false, nil } // Count counts the records. bean's non-empty fields