@@ -39,13 +39,24 @@ var (
39
39
Env : map [string ]string {"MYSQL_ROOT_PASSWORD" : "root" , "MYSQL_DATABASE" : "public" },
40
40
PortRequired : true , ReadyFunc : isReady ,
41
41
}
42
+ optsAnsiQuotes = dktest.Options {
43
+ Env : map [string ]string {"MYSQL_ROOT_PASSWORD" : "root" , "MYSQL_DATABASE" : "public" },
44
+ PortRequired : true , ReadyFunc : isReady ,
45
+ Cmd : []string {"--sql-mode=ANSI_QUOTES" },
46
+ }
42
47
// Supported versions: https://www.mysql.com/support/supportedplatforms/database.html
43
48
specs = []dktesting.ContainerSpec {
44
49
{ImageName : "mysql:5.5" , Options : opts },
45
50
{ImageName : "mysql:5.6" , Options : opts },
46
51
{ImageName : "mysql:5.7" , Options : opts },
47
52
{ImageName : "mysql:8" , Options : opts },
48
53
}
54
+ specsAnsiQuotes = []dktesting.ContainerSpec {
55
+ {ImageName : "mysql:5.5" , Options : optsAnsiQuotes },
56
+ {ImageName : "mysql:5.6" , Options : optsAnsiQuotes },
57
+ {ImageName : "mysql:5.7" , Options : optsAnsiQuotes },
58
+ {ImageName : "mysql:8" , Options : optsAnsiQuotes },
59
+ }
49
60
)
50
61
51
62
func isReady (ctx context.Context , c dktest.ContainerInfo ) bool {
@@ -147,6 +158,44 @@ func TestMigrate(t *testing.T) {
147
158
})
148
159
}
149
160
161
+ func TestMigrateAnsiQuotes (t * testing.T ) {
162
+ // mysql.SetLogger(mysql.Logger(log.New(ioutil.Discard, "", log.Ltime)))
163
+
164
+ dktesting .ParallelTest (t , specsAnsiQuotes , func (t * testing.T , c dktest.ContainerInfo ) {
165
+ ip , port , err := c .Port (defaultPort )
166
+ if err != nil {
167
+ t .Fatal (err )
168
+ }
169
+
170
+ addr := fmt .Sprintf ("mysql://root:root@tcp(%v:%v)/public" , ip , port )
171
+ p := & Mysql {}
172
+ d , err := p .Open (addr )
173
+ if err != nil {
174
+ t .Fatal (err )
175
+ }
176
+ defer func () {
177
+ if err := d .Close (); err != nil {
178
+ t .Error (err )
179
+ }
180
+ }()
181
+
182
+ m , err := migrate .NewWithDatabaseInstance ("file://./examples/migrations" , "public" , d )
183
+ if err != nil {
184
+ t .Fatal (err )
185
+ }
186
+ dt .TestMigrate (t , m )
187
+
188
+ // check ensureVersionTable
189
+ if err := d .(* Mysql ).ensureVersionTable (); err != nil {
190
+ t .Fatal (err )
191
+ }
192
+ // check again
193
+ if err := d .(* Mysql ).ensureVersionTable (); err != nil {
194
+ t .Fatal (err )
195
+ }
196
+ })
197
+ }
198
+
150
199
func TestLockWorks (t * testing.T ) {
151
200
dktesting .ParallelTest (t , specs , func (t * testing.T , c dktest.ContainerInfo ) {
152
201
ip , port , err := c .Port (defaultPort )
0 commit comments