Use Database Connection Strings with Laravel 8
For MySQL, the database connection string from Aiven is in the format:
mysql://username:password@hostname:port/dbname
You can remove the configuration for DB_*
and instead use the variable DATABASE_URL
with the full string.
Pro-tip: Laravel’s built in migrations (I was using Laravel Breeze) expect you to have mysql.sql_require_primary_key
disabled, I’m not sure why. It’s default enabled on a lot of systems, including Aiven and Digital Ocean from what I’ve seen so far, so you may need change this setting if your migrations don’t succeed.
For PostgreSQL, the database connection string looks very similar to MySQL but with a pg-specific prefix:
postgres://username:password@hostname:port/dbname
Again, this connection string goes in the variable called DATABASE_URL
. For PostgreSQL, you also need to set DB_CONNECTION
to pgsql
so that Laravel knows to use this connection.
It’s not a big deal to separate the different variables needed for the database connection but especially as a person that spins up a lot of temporary databases to try stuff out and therefore has to update the connections all the time, this was a neat trick that saves me a minute or two every time.
Hi,
Thanks for sharing. But how charset can be set using DATABASE_URL?
Also, the MySQL connection string can be used directly with PHP PDO?
Any ideas?