@@ -3,6 +3,8 @@ package sync
3
3
import (
4
4
"github.com/webdevops/go-shell"
5
5
"fmt"
6
+ "io/ioutil"
7
+ "os"
6
8
)
7
9
8
10
func (database * Database ) Sync (server * Server ) {
@@ -23,7 +25,6 @@ func (database *Database) syncClearDatabase(server *Server) {
23
25
schema := database .Local .Schema
24
26
database .Local .Schema = ""
25
27
26
-
27
28
Logger .Step ("dropping local database \" %s\" " , schema )
28
29
dropStmt := fmt .Sprintf ("DROP DATABASE IF EXISTS `%s`" , schema )
29
30
dropCmd := shell .Cmd ("echo" , shell .Quote (dropStmt )).Pipe (database .localMysqlCmdBuilder ()... )
@@ -41,22 +42,36 @@ func (database *Database) syncClearDatabase(server *Server) {
41
42
func (database * Database ) syncStructure (server * Server ) {
42
43
Logger .Step ("syncing database structure" )
43
44
45
+ tmpfile , err := ioutil .TempFile ("" , "dump" )
46
+ if err != nil {
47
+ panic (err )
48
+ }
49
+ defer os .Remove (tmpfile .Name ())
50
+
44
51
// Sync structure only
45
52
dumpCmd := database .remoteMysqldumpCmdBuilder ([]string {"--no-data" }, false )
46
- restoreCmd := database . localMysqlCmdBuilder ()
53
+ shell . Cmd ( dumpCmd ... ). Pipe ( "cat" , ">" , tmpfile . Name ()). Run ()
47
54
48
- cmd := shell .Cmd (dumpCmd ... ).Pipe ("gunzip" , "--stdout" ).Pipe (restoreCmd ... )
49
- cmd .Run ()
55
+ // Restore structure only
56
+ restoreCmd := database .localMysqlCmdBuilder ()
57
+ shell .Cmd ("cat" , tmpfile .Name ()).Pipe ("gunzip" , "--stdout" ).Pipe (restoreCmd ... ).Run ()
50
58
}
51
59
52
60
// Sync database data
53
61
func (database * Database ) syncData (server * Server ) {
54
62
Logger .Step ("syncing database data" )
55
63
64
+ tmpfile , err := ioutil .TempFile ("" , "dump" )
65
+ if err != nil {
66
+ panic (err )
67
+ }
68
+ defer os .Remove (tmpfile .Name ())
69
+
56
70
// Sync data only
57
- dumpCmd := database .remoteMysqldumpCmdBuilder ([]string {"--no-create-info" }, true )
58
- restoreCmd := database . localMysqlCmdBuilder ()
71
+ dumpCmd := database .remoteMysqldumpCmdBuilder ([]string {"--no-create-info" }, false )
72
+ shell . Cmd ( dumpCmd ... ). Pipe ( "cat" , ">" , tmpfile . Name ()). Run ()
59
73
60
- cmd := shell .Cmd (dumpCmd ... ).Pipe ("gunzip" , "--stdout" ).Pipe (restoreCmd ... )
61
- cmd .Run ()
74
+ // Restore data only
75
+ restoreCmd := database .localMysqlCmdBuilder ()
76
+ shell .Cmd ("cat" , tmpfile .Name ()).Pipe ("gunzip" , "--stdout" ).Pipe (restoreCmd ... ).Run ()
62
77
}
0 commit comments