Невозможно подключить nodejs к mariadb docker - PullRequest
0 голосов
/ 27 марта 2020

У меня на сервере запущено приложение node.js (а не docker). Я хочу, чтобы он подключился к mariadb docker, работающему на том же сервере. Я настраиваю mariadb docker с помощью следующей команды:

docker run --name mariadb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=a -e MYSQL_ROOT_HOST=% -d mariadb:latest

С nodejs Я пытаюсь подключиться к базе данных через соединения, которые я получаю от Pool.getConnection (). Созданные пулы базы данных хранятся в отдельной базе данных. js.

Я уменьшил проблему до следующего кода:

Моя база данных. js:

const mariadb = require('mariadb');

const pool = {
    'poolRobots': mariadb.createPool({
        database: 'certmanager',
        host: '127.0.0.1',
        port: '3306',
        user: 'root',
        password: 'a',
        connectionLimit: 20
    }),
    'poolNormal': mariadb.createPool({
        database: 'certmanager',
        host: '127.0.0.1',
        port: '3306',
        user: 'root',
        password: 'a',
        connectionLimit: 40
    }),
};

Мой индекс. js:

const db = require('./database');


async function someFunction(){
        let conn;
        try {
                conn = await db.poolNormal.getConnection();
                const query = await conn.query('SELECT * FROM visited_pages',[]);
                console.log('query was successfull');
        } catch(e) {
                console.error(e);
        }
}

setTimeout(async ()=>{
        const main = await someFunction();
},50);

Мой вывод:

TypeError: Cannot read property 'getConnection' of undefined
    at someFunction (/home/ubuntu/CertManager/crawler/index.js:7:44)
    at Timeout.setTimeout [as _onTimeout] (/home/ubuntu/CertManager/crawler/index.js:16:21)
    at ontimeout (timers.js:482:11)
    at tryOnTimeout (timers.js:317:5)
    at Timer.listOnTimeout (timers.js:277:5)

Что меня смущает, так это то, что я все еще могу подключаться к БД с помощью клиента mariadb из моего сервер через:

mariadb --host 127.0.0.1 -u root -D certmanager -p

Так или иначе это возможно с моего сервера через клиента, но не через nodejs. Как я могу это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...