mirror of https://github.com/status-im/migrate.git
Disable foreign_key_checks in Drop command for MySQL (#224)
* Disable FOREIGN_KEY_CHECKS in MySQL when dropping all tables. * Lowercased system variable * Discard error enabling foreign_key_checks, dropping is already successful at this point * Explicitly discard error
This commit is contained in:
parent
2327ddb52d
commit
e85c5f51b9
|
@ -344,9 +344,20 @@ func (m *Mysql) Drop() (err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(tableNames) > 0 {
|
if len(tableNames) > 0 {
|
||||||
|
// disable checking foreign key constraints until finished
|
||||||
|
query = `SET foreign_key_checks = 0`
|
||||||
|
if _, err := m.conn.ExecContext(context.Background(), query); err != nil {
|
||||||
|
return &database.Error{OrigErr: err, Query: []byte(query)}
|
||||||
|
}
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
// enable foreign key checks
|
||||||
|
_, _ = m.conn.ExecContext(context.Background(), `SET foreign_key_checks = 1`)
|
||||||
|
}()
|
||||||
|
|
||||||
// delete one by one ...
|
// delete one by one ...
|
||||||
for _, t := range tableNames {
|
for _, t := range tableNames {
|
||||||
query = "DROP TABLE IF EXISTS `" + t + "` CASCADE"
|
query = "DROP TABLE IF EXISTS `" + t + "`"
|
||||||
if _, err := m.conn.ExecContext(context.Background(), query); err != nil {
|
if _, err := m.conn.ExecContext(context.Background(), query); err != nil {
|
||||||
return &database.Error{OrigErr: err, Query: []byte(query)}
|
return &database.Error{OrigErr: err, Query: []byte(query)}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue