resolved #36
This commit is contained in:
parent
d38aa33645
commit
2c1722ff1d
|
@ -28,6 +28,7 @@ const (
|
|||
// a dialect is a driver's wrapper
|
||||
type dialect interface {
|
||||
Init(DriverName, DataSourceName string) error
|
||||
URI() *uri
|
||||
DBType() string
|
||||
SqlType(t *Column) string
|
||||
SupportInsertMany() bool
|
||||
|
|
19
mysql.go
19
mysql.go
|
@ -33,7 +33,6 @@ type mysqlParser struct {
|
|||
}
|
||||
|
||||
func (p *mysqlParser) parse(driverName, dataSourceName string) (*uri, error) {
|
||||
//cfg.params = make(map[string]string)
|
||||
dsnPattern := regexp.MustCompile(
|
||||
`^(?:(?P<user>.*?)(?::(?P<passwd>.*))?@)?` + // [user[:password]@]
|
||||
`(?:(?P<net>[^\(]*)(?:\((?P<addr>[^\)]*)\))?)?` + // [net[(addr)]]
|
||||
|
@ -49,6 +48,20 @@ func (p *mysqlParser) parse(driverName, dataSourceName string) (*uri, error) {
|
|||
switch names[i] {
|
||||
case "dbname":
|
||||
uri.dbName = match
|
||||
case "params":
|
||||
if len(match) > 0 {
|
||||
kvs := strings.Split(match, "&")
|
||||
for _, kv := range kvs {
|
||||
splits := strings.Split(kv, "=")
|
||||
if len(splits) == 2 {
|
||||
switch splits[0] {
|
||||
case "charset":
|
||||
uri.charset = splits[1]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return uri, nil
|
||||
|
@ -68,6 +81,10 @@ func (b *base) init(parser parser, drivername, dataSourceName string) (err error
|
|||
return
|
||||
}
|
||||
|
||||
func (b *base) URI() *uri {
|
||||
return b.uri
|
||||
}
|
||||
|
||||
func (b *base) DBType() string {
|
||||
return b.uri.dbType
|
||||
}
|
||||
|
|
|
@ -638,8 +638,12 @@ func (statement *Statement) genCreateTableSQL() string {
|
|||
if statement.Engine.dialect.SupportEngine() && statement.StoreEngine != "" {
|
||||
sql += " ENGINE=" + statement.StoreEngine
|
||||
}
|
||||
if statement.Engine.dialect.SupportCharset() && statement.Charset != "" {
|
||||
if statement.Engine.dialect.SupportCharset() {
|
||||
if statement.Charset != "" {
|
||||
sql += " DEFAULT CHARSET " + statement.Charset
|
||||
} else if statement.Engine.dialect.URI().charset != "" {
|
||||
sql += " DEFAULT CHARSET " + statement.Engine.dialect.URI().charset
|
||||
}
|
||||
}
|
||||
sql += ";"
|
||||
return sql
|
||||
|
|
Loading…
Reference in New Issue