FROM mariadb:10.5.6
COPY /database/sql/* /sql/
# ^ Contains one sql file "creation.sql"
creation.sql
CREATE DATABASE my_db;
There will eventually be more SQL here to build and populate a test database.
Node js:
import mysql from 'mysql';
const connection = mysql.createConnection({
// connection info here -- connects to docker container
});
function queryPromise(sql) {
console.log('SQL> ', sql);
return new Promise((resolve, reject) => {
connection.query(sql, (error, results, fields) => {
if (error) console.error(error);
console.log('\tSQL result:', results);
resolve({ error, results });
});
});
}
connection.connect();
// Using chained promises to stop queries from running at the same time and the connection getting cut off
queryPromise('SELECT 1 + 1 AS solution') // Works OK
.then(() => queryPromise('show databases')) // Works OK
.then(() => queryPromise('source sql/creation.sql')) // Throws an error
.then(() => connection.end());
Trying to run queryPromise('source sql/creation.sql') via a mysql query it throws an error.
Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'source sql/creation.sql' at line 1
at Query.Sequence._packetToError (C:\code\tox-db-prototype\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14)
If I instead go into the container, run mysql, and run source sql/creation.sql from the mysql command line, then it runs fine. If I use queryPromise('CREATE DATABASE my_db') as the query, it also runs okay. The issue seems to be that running "source" as a query with this module is giving an error.
Reproduction
Dockerfile:
creation.sql
There will eventually be more SQL here to build and populate a test database.
Node js:
Trying to run
queryPromise('source sql/creation.sql')
via a mysql query it throws an error.If I instead go into the container, run
mysql
, and runsource sql/creation.sql
from the mysql command line, then it runs fine. If I usequeryPromise('CREATE DATABASE my_db')
as the query, it also runs okay. The issue seems to be that running "source" as a query with this module is giving an error.