Skip to content

[Doctrine] Replace serverVersion example values with full version numbers #19877

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions doctrine.rst
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ The database connection information is stored as an environment variable called
# .env (or override DATABASE_URL in .env.local to avoid committing your changes)

# customize this line!
DATABASE_URL="mysql://db_user:[email protected]:3306/db_name?serverVersion=5.7"
DATABASE_URL="mysql://db_user:[email protected]:3306/db_name?serverVersion=8.0.37"

# to use mariadb:
# Before doctrine/dbal < 3.7
Expand All @@ -53,7 +53,7 @@ The database connection information is stored as an environment variable called
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/app.db"

# to use postgresql:
# DATABASE_URL="postgresql://db_user:[email protected]:5432/db_name?serverVersion=11&charset=utf8"
# DATABASE_URL="postgresql://db_user:[email protected]:5432/db_name?serverVersion=12.19 (Debian 12.19-1.pgdg120+1)&charset=utf8"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the correct format according to Doctrine DBAL, but I'm not sure if the DATABASE_URL can contain spaces and parentheses...

Can someone confirm that this works? Otherwise I will set up a test installation of Symfony with PostgreSQL and test it myself...

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for mariadb its mariadb-10.11.5
i dont know for postgresql, but perhaps there is sort of same convention naming

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That actually changed as well with DBAL 4.0, see UPGRADE.md:

BC BREAK: Removed mariadb- prefix hack

Previously, it was necessary to prefix the serverVersion parameter with mariadb- when using MariaDB. Doing so is now considered invalid, and you should prefer using the version as returned by SELECT VERSION();

-'serverVersion' => 'mariadb-10.9.3'
+'serverVersion' => '10.9.3-MariaDB-1'

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasnt aware of this, still using v3
but thx for sharing :)

Copy link
Contributor

@alamirault alamirault May 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With

DATABASE_URL="postgresql://app:[email protected]:5432/app?serverVersion=12.19 (Debian 12.19-1.pgdg120+1)&charset=utf8"

Parsed DNS looks good in vendor/doctrine/doctrine-bundle/src/ConnectionFactory.php

image

(I didn't try end to end test)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Antoine, thanks for double checking this!


# to use oracle:
# DATABASE_URL="oci8://db_user:[email protected]:1521/db_name"
Expand All @@ -75,7 +75,7 @@ database for you:
$ php bin/console doctrine:database:create

There are more options in ``config/packages/doctrine.yaml`` that you can configure,
including your ``server_version`` (e.g. 5.7 if you're using MySQL 5.7), which may
including your ``server_version`` (e.g. 8.0.37 if you're using MySQL 8.0.37), which may
affect how Doctrine functions.

.. tip::
Expand Down
2 changes: 1 addition & 1 deletion doctrine/dbal.rst
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Then configure the ``DATABASE_URL`` environment variable in ``.env``:
# .env (or override DATABASE_URL in .env.local to avoid committing your changes)

# customize this line!
DATABASE_URL="mysql://db_user:[email protected]:3306/db_name?serverVersion=5.7"
DATABASE_URL="mysql://db_user:[email protected]:3306/db_name?serverVersion=8.0.37"

Further things can be configured in ``config/packages/doctrine.yaml`` - see
:ref:`reference-dbal-configuration`. Remove the ``orm`` key in that file
Expand Down
8 changes: 4 additions & 4 deletions reference/configuration/doctrine.rst
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ The following block shows all possible configuration keys:
charset: utf8mb4
logging: '%kernel.debug%'
platform_service: App\DBAL\MyDatabasePlatformService
server_version: '5.7'
server_version: '8.0.37'
mapping_types:
enum: string
types:
Expand Down Expand Up @@ -91,7 +91,7 @@ The following block shows all possible configuration keys:
charset="utf8mb4"
logging="%kernel.debug%"
platform-service="App\DBAL\MyDatabasePlatformService"
server-version="5.7">
server-version="8.0.37">

<doctrine:option key="foo">bar</doctrine:option>
<doctrine:mapping-type name="enum">string</doctrine:mapping-type>
Expand Down Expand Up @@ -134,13 +134,13 @@ If you want to configure multiple connections in YAML, put them under the
user: root
password: null
host: localhost
server_version: '5.6'
server_version: '8.0.37'
customer:
dbname: customer
user: root
password: null
host: localhost
server_version: '5.7'
server_version: '8.2.0'

The ``database_connection`` service always refers to the *default* connection,
which is the first one defined or the one configured via the
Expand Down
4 changes: 2 additions & 2 deletions testing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ need in your ``.env.test`` file:
# .env.test

# ...
DATABASE_URL="mysql://db_user:[email protected]:3306/db_name_test?serverVersion=5.7"
DATABASE_URL="mysql://db_user:[email protected]:3306/db_name_test?serverVersion=8.0.37"

In the test environment, these env files are read (if vars are duplicated
in them, files lower in the list override previous items):
Expand Down Expand Up @@ -381,7 +381,7 @@ env var:
.. code-block:: env

# .env.test.local
DATABASE_URL="mysql://USERNAME:[email protected]:3306/DB_NAME?serverVersion=5.7"
DATABASE_URL="mysql://USERNAME:[email protected]:3306/DB_NAME?serverVersion=8.0.37"

This assumes that each developer/machine uses a different database for the
tests. If the test set-up is the same on each machine, use the ``.env.test``
Expand Down
Loading