Необработанное отклонение SequelizeDatabaseError: база данных не выбрана

Я использую sequelize в своем приложении Express.js с MySQL.

Все учетные данные базы данных хранятся в файле .env и верны:

DATABASE_NAME= mydb
DATABASE_USERNAME= root
DATABASE_PASSWORD= pass
DATABASE_HOST= localhost
DATABASE_PORT= 3306

файл database.js:

require('dotenv').config();
const Sequelize = require('sequelize');

module.exports = new Sequelize(
    process.env.DATABAST_NAME,
    process.env.DATABASE_USERNAME,
    process.env.DATABASE_PASSWORD,
    {
        port: process.env.DATABASE_PORT,
        host: process.env.DATABASE_HOST,
        dialect: 'mysql'
    }
);

В пользовательской модели:

    const Sequelize = require('sequelize');
    const db = require('../config/database');

    module.exports = db.define('user', {
        username: {
            type: Sequelize.STRING,
            unique: true,
            primaryKey: true
        },
        email: {
            type: Sequelize.STRING,
            unique: true
        },
        password: {
            type: Sequelize.STRING
        },
    }, {
        freezeTableName: true,
        timestamps: false
    });

  user.findAll().then(data=>{
        console.log(data)
   });

База данных mydb имеет только одну таблицу user, при запуске приложения я получил ошибку:

Executing (default): SELECT `username`, `email`, `password` FROM `user` AS `user`;
Unhandled rejection SequelizeDatabaseError: No database selected
    at Query.formatError (C:\Users\me\WebstormProjects\Backend\node_modules\sequelize\lib\dialects\mysql\query.js:241:16)
    at Query.handler [as onResult] (C:\Users\me\WebstormProjects\Backend\node_modules\sequelize\lib\dialects\mysql\query.js:48:23)
    at Query.execute (C:\Users\me\WebstormProjects\Backend\node_modules\mysql2\lib\commands\command.js:30:14)
    at Connection.handlePacket (C:\Users\me\WebstormProjects\Backend\node_modules\mysql2\lib\connection.js:449:32)
    at PacketParser.Connection.packetParser.p [as onPacket] (C:\Users\me\WebstormProjects\Backend\node_modules\mysql2\lib\connection.js:72:12)
    at PacketParser.executeStart (C:\Users\me\WebstormProjects\Backend\node_modules\mysql2\lib\packet_parser.js:75:16)
    at Socket.Connection.stream.on.data (C:\Users\me\WebstormProjects\Backend\node_modules\mysql2\lib\connection.js:79:25)
    at Socket.emit (events.js:189:13)
    at addChunk (_stream_readable.js:284:12)
    at readableAddChunk (_stream_readable.js:265:11)
    at Socket.Readable.push (_stream_readable.js:220:10)
    at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
  1. Я попытался протестировать файл .env с помощью приведенного ниже кода, и все можно прочитать:

    var config = require ('dotenv'). config (); console.log (конфигурация)

  2. Я попытался добавить имя базы данных перед словом «пользователь» в db.defind (), и у меня возникла та же проблема.

Пожалуйста, если у вас есть предложения, дайте мне знать.


person Danfeng    schedule 30.04.2019    source источник
comment
У вас опечатка process.env.DATABAST_NAME должно быть process.env.DATABASE_NAME   -  person mexo    schedule 01.05.2019
comment
Я не могу в это поверить. одна опечатка потрачена впустую. Большое спасибо!   -  person Danfeng    schedule 01.05.2019


Ответы (1)


  1. Установите пакет dotenv из npm с помощью команды:
npm install dotenv
  1. Требуйте dotenv в вашем main.ts файле, который находится внутри папки 'src', добавив следующие строки:
import * as dotenv from "dotenv";
dotenv.config();
  1. Запустите свой проект еще раз.
person Aziz Ahmed    schedule 19.05.2021