db-migrate / node-db-migrate

Database migration framework for node
Other
2.32k stars 360 forks source link

setting DATABASE_URL doesn't ignore defaultEnv from .db-migraterc #564

Open gudatcomputers opened 6 years ago

gudatcomputers commented 6 years ago

I'm submitting a...

Current behavior

running db-migrate with DATABASE_URL defined does not ignore defaultEnv from .db-migraterc

Expected behavior

running db-migrate with DATABASE_URL respects that value and doesn't try to read defaultEnv from .db-migraterc

Minimal reproduction of the problem with instructions

  1. export DATABASE_URL=mysql://<some-valid-connection-string>
  2. create a .db-migraterc with a defaultEnv configured. I chose local instead of dev for my example.
  3. Run db-migrate.
  4. You will see something like "environment 'local' is not defined"

What is the motivation / use case for changing the behavior?

When setting database URL, the intent is that it is defining everything about your environment. To respect the defaultEnv setting from .db-migraterc seems to contradict that

Environment


db-migrate version: 0.11.1
plugins with versions: unknown, don't think I'm using plugins?
db-migrate driver with versions: 
mysql 1.1.10

Additional information:
- Node version: 8.9.4
- Platform:  MacOS 10.13

Others:

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/57571332-setting-database_url-doesn-t-ignore-defaultenv-from-db-migraterc?utm_campaign=plugin&utm_content=tracker%2F73887&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F73887&utm_medium=issues&utm_source=github).
levino commented 6 years ago

Actually I think the 'DATABASE_URL' is totally ignored. I wanted to use it to override my database.json but cannot get it to work.

wzrdtales commented 6 years ago

I will check that back thanks for reporting. Environment variables should be always favoured before anything else.

jirikrepl commented 6 years ago

I run into similar problem with mongodb url, escaping connection string by double quotes worked for me. export DATABASE_URL="..."

bill-kitsune commented 6 years ago

I have a PR out for this, but there is also a work-around.

@Levino my case sounded a lot like yours.

In your database.json you do the following:

{ "heroku": { "ENV": "DATABASE_URL" } }

Then run the migrate command with --env heroku it should work.