@@ -44,6 +44,9 @@ func NewRemote(db Remote) *Remote {
4444
4545func (r * Remote ) Create (info CreateInfo ) error {
4646 createSql := fmt .Sprintf ("create database `%s` default character set %s collate %s" , info .Name , info .Format , info .Collation )
47+ if len (info .Collation ) == 0 {
48+ createSql = fmt .Sprintf ("create database `%s` default character set %s" , info .Name , info .Format )
49+ }
4750 if err := r .ExecSQL (createSql , info .Timeout ); err != nil {
4851 if strings .Contains (strings .ToLower (err .Error ()), "error 1007" ) {
4952 return buserr .New ("ErrDatabaseIsExist" )
@@ -311,15 +314,15 @@ func (r *Remote) Recover(info RecoverInfo) error {
311314
312315func (r * Remote ) SyncDB (version string ) ([]SyncDBInfo , error ) {
313316 var datas []SyncDBInfo
314- rows , err := r .Client .Query ("select schema_name, default_character_set_name from information_schema.SCHEMATA" )
317+ rows , err := r .Client .Query ("select schema_name, default_character_set_name, default_collation_name from information_schema.SCHEMATA" )
315318 if err != nil {
316319 return datas , err
317320 }
318321 defer rows .Close ()
319322
320323 for rows .Next () {
321- var dbName , charsetName string
322- if err = rows .Scan (& dbName , & charsetName ); err != nil {
324+ var dbName , charsetName , collation string
325+ if err = rows .Scan (& dbName , & charsetName , & collation ); err != nil {
323326 return datas , err
324327 }
325328 if dbName == "information_schema" || dbName == "mysql" || dbName == "performance_schema" || dbName == "sys" || dbName == "__recycle_bin__" || dbName == "recycle_bin" {
@@ -330,6 +333,7 @@ func (r *Remote) SyncDB(version string) ([]SyncDBInfo, error) {
330333 From : "remote" ,
331334 MysqlName : r .Database ,
332335 Format : charsetName ,
336+ Collation : collation ,
333337 }
334338 userRows , err := r .Client .Query ("select user,host from mysql.db where db = ?" , dbName )
335339 if err != nil {
0 commit comments