npx sequelize-cli db:migrate command don't read the environment variables with PM2
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 35/100
- Issue type
- Bug
- Clarity
- Needs clarification
- Activity status
- Stale
- Tech stack
- javascript, nodejs, postgres
Research direction
Start with the .sequelizerc, src/db/config/config.cjs, and src/common/config.js files, then run npx sequelize-cli db:migrate under the reported PM2 setup. Compare the environment available to the CLI with the values read through dotenv and verify the PostgreSQL connection. Done means the migration command uses the intended database settings instead of 127.0.0.1:5432.
Written by the indexing model from the issue text.
Description
What you are doing?
npx sequelize-cli db:migrate command don't read the environment variables
This command works without problems in my local environment on macOS Sonoma 14.2.1 but when I try to run it in a development environment (PM2 version 5.3.1) it does not work
.sequelizerc
const path = require('path');
module.exports = {
'config': path.resolve('src/db/config', 'config.cjs'),
'models-path': '../src/db/models/',
'migrations-path': path.resolve('src/db', 'migrations'),
'seeders-path': path.resolve('src/db', 'seeders'),
}
config.cjs
const config = require('../../common/config.js');
module.exports = {
development: {
username: config.dbUser,
password: config.dbPassword,
database: config.dbName,
host: config.dbHost,
dialect: 'postgres',
migrationStorageTableSchema: 'vic',
logging: !config.isProd,
},
test: {
username: 'root',
password: null,
database: 'database_test',
host: '127.0.0.1',
dialect: 'postgres',
},
production: {
username: 'root',
password: null,
database: 'database_production',
host: '127.0.0.1',
dialect: 'postgres',
},
};
common/config.js
require('dotenv').config();
const config = {
env: process.env.NODE_ENV || 'dev',
host: process.env.HOST || 'localhost',
port: process.env.PORT || 3000,
dbHost: process.env.DB_HOST,
dbPort: process.env.DB_PORT,
dbName: process.env.DB_NAME,
dbUser: process.env.DB_USER,
dbPassword: process.env.DB_PASSWORD,
isProd: process.env.NODE_ENV === 'production',
};
module.exports = config;
What do you expect to happen?
Get a message similar to the one obtained in my local macOS environment
> [email protected] migrations:run
> sequelize-cli db:migrate
Sequelize CLI [Node: 20.11.0, CLI: 6.6.2, ORM: 6.37.3]
Loaded configuration file "src/db/config/config.cjs".
Using environment "development".
Executing (default): SELECT 1+1 AS result
Executing (default): CREATE SCHEMA IF NOT EXISTS "vic";
Executing (default): SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' AND table_type LIKE '%TABLE' AND table_name != 'spatial_ref_sys';
Executing (default): SELECT pk.constraint_type as "Constraint",c.column_name as "Field", c.column_default as "Default",c.is_nullable as "Null", (CASE WHEN c.udt_name = 'hstore' THEN c.udt_name ELSE c.data_type END) || (CASE WHEN c.character_maximum_length IS NOT NULL THEN '(' || c.character_maximum_length || ')' ELSE '' END) as "Type", (SELECT array_agg(e.enumlabel) FROM pg_catalog.pg_type t JOIN pg_catalog.pg_enum e ON t.oid=e.enumtypid WHERE t.typname=c.udt_name) AS "special", (SELECT pgd.description FROM pg_catalog.pg_statio_all_tables AS st INNER JOIN pg_catalog.pg_description pgd on (pgd.objoid=st.relid) WHERE c.ordinal_position=pgd.objsubid AND c.table_name=st.relname) AS "Comment" FROM information_schema.columns c LEFT JOIN (SELECT tc.table_schema, tc.table_name, cu.column_name, tc.constraint_type FROM information_schema.TABLE_CONSTRAINTS tc JOIN information_schema.KEY_COLUMN_USAGE cu ON tc.table_schema=cu.table_schema and tc.table_name=cu.table_name and tc.constraint_name=cu.constraint_name and tc.constraint_type='PRIMARY KEY') pk ON pk.table_schema=c.table_schema AND pk.table_name=c.table_name AND pk.column_name=c.column_name WHERE c.table_name = 'SequelizeMeta' AND c.table_schema = 'public'
Executing (default): SELECT table_name FROM information_schema.tables WHERE table_schema = 'vic' AND table_name = 'SequelizeMeta'
Executing (default): SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a, pg_namespace s WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = 'SequelizeMeta' AND s.oid = t.relnamespace AND s.nspname = 'vic' GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;
Executing (default): SELECT "name" FROM "vic"."SequelizeMeta" AS "SequelizeMeta" ORDER BY "SequelizeMeta"."name" ASC;
What is actually happening?
I am getting this message in the terminal, where it is not reading the environment variables and is not creating the models in the database
Sequelize CLI [Node: 20.11.0, CLI: 6.6.2, ORM: 6.37.3]
Loaded configuration file "src/db/config/config.cjs".
Using environment "development".
ERROR: connect ECONNREFUSED 127.0.0.1:5432
I tried printing the variables and either way I'm getting undefined
Dialect: postgres
Database version: PostgreSQL 12.19 (Ubuntu 12.19-0ubuntu0.20.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.4.0-1ubuntu1~20.04.3) 9.4.0, 64-bit
Sequelize CLI version: 6.6.2
Sequelize version: 6.37.3
PM2 version: 5.3.1
- Dominant language
- JavaScript
- Stars
- 2.6k
- Forks
- 524
- PR merge metrics
- No merged PRs in 30d
Getting set up
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from sequelize/cli
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 3/5 1-2 days Newbie friendliness 68/100
-
Difficulty 3/5 1-2 days Newbie friendliness 48/100
-
Difficulty 3/5 1-2 days Newbie friendliness 55/100
-
Difficulty 3/5 1-2 days Newbie friendliness 45/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
Maintainers usually reply within 1 day
-
curriculum documentation quality
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
githubnext/gh-aw-workshop#3897 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Maintainers usually reply within 1 day
-
agent/quality hive/hosted-available-lke648397-260827-5n31 quality testing
Difficulty 2/5 1-3 hours Newbie friendliness 91/100
Maintainers usually reply within 1 day