diff --git a/src/database.js b/src/database.js index fb26f4301..c5afa89ab 100644 --- a/src/database.js +++ b/src/database.js @@ -78,10 +78,10 @@ async function uninitialize() { } async function clear() { - await fs.promises.writeFile('/tmp/extra.cnf', `[client]\nhost=${gDatabase.hostname}\nuser=${gDatabase.username}\npassword=${gDatabase.password}\ndatabase=${gDatabase.name}`, 'utf8'); + const tables = await query("SELECT table_name FROM information_schema.tables WHERE table_schema = 'box' AND table_name != 'migrations';"); + const queries = [{ query: "SET FOREIGN_KEY_CHECKS = 0;" }].concat(tables.map(q => { return { query: 'TRUNCATE TABLE ' + q.TABLE_NAME }; })); - const cmd = 'mysql --defaults-extra-file=/tmp/extra.cnf -Nse "SHOW TABLES" | grep -v "^migrations$" | while read table; do mysql --defaults-extra-file=/tmp/extra.cnf -e "SET FOREIGN_KEY_CHECKS = 0; TRUNCATE TABLE $table"; done'; - await shell.bash(cmd, {}); + await transaction(queries); } async function query() {