EF Core migration to remote database - entity-framework

I have a working app and database locally. I want to setup a remote database for the remote application.
I thought forcing the environment variable would to it:
dotnet ef database update -- --environment Production
But it says "...The database is already up to date." Checking the remote database, it's still empty.
Now, the appsettings.json and appsettings.Development.json files appear to be working correctly. I confirmed my local application connects to my local database, and my remote application connects to my remote database.
Given that the connection strings are correct in the settings, how do I tell EF to do the thing again but for the other database? I feel like I'm missing something obvious.

So I was just using the wrong environment declaration. Run this before the update:
$env:ASPNETCORE_ENVIRONMENT = 'Production'

Related

Prisma with Bit.io connection issue

I have a next.js app setup with prisma (v3.13) as the ORM. I am testing out bit.io for db hosting, and I am getting this error when trying to connect with the client. Everything works as intended when I use a local postgres db. I'm currently using a connection string that looks like the following:
DATABASE_URL="postgresql://[username]:[password]#db.bit.io/[username]/[dbname]"
I am trying to run prisma db push and getting the following error
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": PostgreSQL database "eli-front/rankstl", schema "public" at "db.bit.io:5432"
Error: P1000: Authentication failed against database server at `db.bit.io`, the provided database credentials for `(not available)` are not valid.
Please make sure to provide valid database credentials for the database server at `db.bit.io`.
I am assuming the core of the issue has to due with the part of the error that says credentials for '(not available)' as if something isn't loading correctly.
Using the failing connection string with psql works completely fine, but not with prisma.
There are two things that need to be done in order for bit.io to work with Prisma.
Database names must be formatted as username.dbname rather than username/dbname. bit.io supports a number of different separator characters in the database name because different clients have different requirements around permissible characters in database names.
You have to create a second database on bit.io to use as a "shadow database." By default, this is done automatically—a shadow database is created, used, and deleted. However, most cloud database providers don't allow use of the CREATE DATABASE, so a shadow database must be created explicitly. See the prisma docs for details.
See the bit.io docs on connecting with Prisma for more details on setting up a minimum working connection.

Accessing Postgresql Database on Heroku After doing git push heroku

Please I need your help.
I have a Django app that is running on heroku.
The Django app initially uses an sqlite3 database.
The local and the remote versions of the app worked fine.
I could access the sqlite3 database on my local machine. However, I have no idea, e.g. an interface, through which I could access the database version that is running on heroku.
Then, I changed the database to Postgresql.
The local version of the database worked fine with the application, as I could see the data being written into the local posgresql whenever I have a need to check the data in the database.
However, I need to be able to see how data is being written into the remote postgresql.
When I try to connect to the database on postgresql, I get an error as shown in the snapshot below.
Please, how can I connect to the database on heroku and see my database.
I am currently using a free heroku account. I hope that is also not a problem?
enter image description here

my postgres is unable to connect ever since heroku did a maintenance update 12 hours ago

anyone facing something similar? sadly I'm on a free plan so I can't open a ticket... does anyone know of a way to restart the service/machine of the DB? maybe that would just solve it...
ok so the issue in my case is that indeed heroku performed some sort of maintenance on the DB, and apparently it's connection params (host/url/user/password) had changed... and since it was embedded throughout all my interfaces (the app, my db tools, admin app I also have) - none were able to connect (they'd timeout).
while trying to figure out, I used the wonderful CLI tools of heroku pg:info and heroku pg:diagnose and even heroku pg:psql and tested to see that my data is still there... eventually I went to the online admin and that's where I saw the connections params had changed. BTW - I have this project for 2 years and this is the first time this had happened...
I was in the same situation. Heroku will email you that your database is scheduled for maintenance. After it's complete, connecting to the database fails because of this error:
error: no pg_hba.conf entry for host "IP_ADDRESS", user "DB_USER", database "DB_NAME", no encryption
This is telling us that incorrect credentials were given, meaning the database connection string has changed. I first checked the credentials on the website for the Heroku Postgres Add-on (data.heroku.com), but the connection string was still the same as before; it has not updated or changed at all, therefore this was misleading. Instead, the updated connection string is found inside of the DATABASE_URL config variable, located in the Settings tab of your app on the Heroku dashboard (dashboard.heroku.com), under Config Vars. To avoid manually correcting this problem again, get the connection string from the DATABASE_URL config variable directly, as opposed to hard coding it in your app.
Yes, Im in the same situation. Heroku are a bunch of amateurs. They did some maintenance on the DB, and after it was done, credentials don't work, even those listed in admin/dashboard section of web. Bunch of loosers... #heroku

sailsjs on Heroku not creating model in postgresql

I am trying to use sails.js on Heroku. When I push my changes, the application starts, but when I try to run MyModel.find() methods, I receive an E_NOTFOUND error. When I log into the database with psql, I see that the tables have not been created automatically. I have the policy in models.js set to migrate: 'drop', so shouldn't I at least get empty tables made when I launch the application? Is there something going on on Heroku that it doesn't like me running sails?
edit:
I had previously been putting settings in development.js and production.js that were different settings (heroku postgresql settings in production). I took that out, and put the settings in connections.js, and it seems like I am able to do the queries and such on the Models, however, when I do heroku pg:psql to connect to my database, I don't see the tables if I do "select * mytable;" it tells me no relation is found.
I believe the problem was that even though I had separate settings for development or production databases, when NODE_ENV was set to production, sails defaults to "safe" and will not let you change it to alter or drop - silently. Changing NODE_ENV to something else allowed the tables to be created.

How to roll back EF migration on Azure

HELP! I have an MVC4 app hosted on Azure. I'm using EF code-first. Here's my scenario:
I set a flag in my production database to cause the website to display a "website is disabled" message in lieu of the usual website behavior.
I published an update to the website code to the Staging instance. When I ran the staging instance, it applied some migrations to the database schema. At this point, the production instance would not work if I were to re-enable it because the database schema is not compatible with the production code
When I tested the staging instance, I discovered that it doesn't work correctly.
Now I realize that I don't know how to back out the EF migrations that I applied so that I can re-enable the Production instance and get back to where I was before I ran the Staging instance. I know how to use the Package Manager Console in Visual Studio to go to a specific migration in the local database, but I have no idea how to manually tell Azure to update-database to a specific migration.
Navigate to your database's dashboard on the Azure portal and select "Show connection strings". Copy the ADO.NET string into the -ConnectionString switch of the Update-Database command. You should end up with something like this:
Update-Database
-TargetMigration {YourMigration}
-ConnectionString "Server=tcp:{your server name}.database.windows.net,1433;
Database={your db};
User ID={your user}#{your server};
Password={your password};
Trusted_Connection=False;
Encrypt=True;
Connection Timeout=30;"
-ConnectionProviderName "System.Data.SqlClient"
Run a "Get-Migrations"
it will display a list of migrations.
After that:
Update-Database -TargetMigration:"{NAME_OF_SELECTED_MIGRATION}"
where {NAME_OF_SELECTED_MIGRATION} will be replaced with the name you want.
PS: remove "{" and "}" characters.