@@ -39,15 +39,15 @@ func (r *Remote) Create(info CreateInfo) error {
3939 return err
4040 }
4141
42- if err := r .CreateUser (info ); err != nil {
42+ if err := r .CreateUser (info , true ); err != nil {
4343 _ = r .ExecSQL (fmt .Sprintf ("drop database if exists `%s`" , info .Name ), info .Timeout )
4444 return err
4545 }
4646
4747 return nil
4848}
4949
50- func (r * Remote ) CreateUser (info CreateInfo ) error {
50+ func (r * Remote ) CreateUser (info CreateInfo , withDeleteDB bool ) error {
5151 var userlist []string
5252 if strings .Contains (info .Permission , "," ) {
5353 ips := strings .Split (info .Permission , "," )
@@ -62,15 +62,17 @@ func (r *Remote) CreateUser(info CreateInfo) error {
6262
6363 for _ , user := range userlist {
6464 if err := r .ExecSQL (fmt .Sprintf ("create user %s identified by '%s';" , user , info .Password ), info .Timeout ); err != nil {
65- _ = r .Delete (DeleteInfo {
66- Name : info .Name ,
67- Version : info .Version ,
68- Username : info .Username ,
69- Permission : info .Permission ,
70- ForceDelete : true ,
71- Timeout : 300 })
72- if strings .Contains (err .Error (), "ERROR 1396" ) {
73- return buserr .New (constant .ErrUserIsExist )
65+ if withDeleteDB {
66+ _ = r .Delete (DeleteInfo {
67+ Name : info .Name ,
68+ Version : info .Version ,
69+ Username : info .Username ,
70+ Permission : info .Permission ,
71+ ForceDelete : true ,
72+ Timeout : 300 })
73+ if strings .Contains (err .Error (), "ERROR 1396" ) {
74+ return buserr .New (constant .ErrUserIsExist )
75+ }
7476 }
7577 return err
7678 }
@@ -82,13 +84,15 @@ func (r *Remote) CreateUser(info CreateInfo) error {
8284 grantStr = fmt .Sprintf ("%s identified by '%s' with grant option;" , grantStr , info .Password )
8385 }
8486 if err := r .ExecSQL (grantStr , info .Timeout ); err != nil {
85- _ = r .Delete (DeleteInfo {
86- Name : info .Name ,
87- Version : info .Version ,
88- Username : info .Username ,
89- Permission : info .Permission ,
90- ForceDelete : true ,
91- Timeout : 300 })
87+ if withDeleteDB {
88+ _ = r .Delete (DeleteInfo {
89+ Name : info .Name ,
90+ Version : info .Version ,
91+ Username : info .Username ,
92+ Permission : info .Permission ,
93+ ForceDelete : true ,
94+ Timeout : 300 })
95+ }
9296 return err
9397 }
9498 }
@@ -202,7 +206,7 @@ func (r *Remote) ChangeAccess(info AccessChangeInfo) error {
202206 Password : info .Password ,
203207 Permission : info .Permission ,
204208 Timeout : info .Timeout ,
205- }); err != nil {
209+ }, false ); err != nil {
206210 return err
207211 }
208212 if err := r .ExecSQL ("flush privileges" , 300 ); err != nil {
@@ -312,16 +316,17 @@ func (r *Remote) SyncDB(version string) ([]SyncDBInfo, error) {
312316 i ++
313317 }
314318 if len (dataItem .Username ) == 0 {
319+ userName := loadNameByDB (dbName , version )
315320 if err := r .CreateUser (CreateInfo {
316321 Name : dbName ,
317322 Format : charsetName ,
318323 Version : version ,
319- Username : dbName ,
324+ Username : userName ,
320325 Password : common .RandStr (16 ),
321326 Permission : "%" ,
322327 Timeout : 300 ,
323- }); err != nil {
324- global . LOG . Errorf ("sync from remote server failed, err: create user failed %v" , err )
328+ }, false ); err != nil {
329+ return datas , fmt . Errorf ("sync db from remote server failed, err: create user failed %v" , err )
325330 }
326331 dataItem .Username = dbName
327332 dataItem .Permission = "%"
0 commit comments