Skip to content

Steps to configure doctrine/orm for utf8mb4 aren't correct #5526

Closed
@samjarrett

Description

@samjarrett
Contributor

PR #5100 took on the task of changing information on setting mysql server defaults from UTF8 to utf8mb4. However doctrine does not actually obey this - at some point doctrine started explicitly setting column and table-level collation/charsets, and the value seems to be fixed (by default) to standard utf8.

Alternatives to force utf8mb4 for your entities require the following annotation:

@ORM\Table(options={"collate"="utf8mb4_unicode_ci", "charset"="utf8mb4"})

and while this seems hacky, it does the job.

There is a PR open for DoctrineBundle that should allow users to set a global option in their projects, although until this is merged, the documentation should be revised to remove this section as it may be dangerous for users relying upon it as the solution.

Activity

DHager

DHager commented on Jul 16, 2015

@DHager
Contributor

To quibble a little bit: I believe #5100 is still correct... it's just that the scope of what's being configured is limited to the MySQL server itself. That'll affect SQL code that doesn't explicitly call for a given character set or collation, but won't override Doctrine when it explicitly tells the server to do something else.

However doctrine does not actually obey this

I agree that it's a pain, but changing its behavior at this point could be a backwards-compatibility break, for all the people who thought omitting the table-options was guaranteed to give them utf8.

There's some more discussion on that in doctrine/dbal#851.

Tobion

Tobion commented on Nov 13, 2017

@Tobion
Contributor

This is fixed as the documentation includes now the following snippet which both set the default charset for tables and correctly set the connection charset.

doctrine:
    dbal:
        charset: utf8mb4
        default_table_options:
            charset: utf8mb4
            collate: utf8mb4_unicode_ci
xabbuh

xabbuh commented on Nov 14, 2017

@xabbuh
Member

closing as fixed by #6274

rquadling

rquadling commented on Aug 14, 2018

@rquadling

With regard to the collation, https://dev.mysql.com/doc/refman/8.0/en/charset-collation-names.html contains some very useful info.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @rquadling@DHager@samjarrett@Tobion@xabbuh

        Issue actions

          Steps to configure doctrine/orm for utf8mb4 aren't correct · Issue #5526 · symfony/symfony-docs