Closed
Description
Symfony version(s) affected
6.2
Description
I'm trying to use doctrine-messenger in a database where are some legacy tables that aren't even mapped to entites and have enum fields.
On messenger first start (when it tries to create the messenger_messages table) it scans all my tables and dies if finds anything with an enum field.
Stack:
In AbstractPlatform.php line 441:
[Doctrine\DBAL\Exception]
Unknown database type enum requested, Doctrine\DBAL\Platforms\MySQL80Platform may not support it.
Exception trace:
at /var/www/html/vendor/doctrine/dbal/src/Platforms/AbstractPlatform.php:441
Doctrine\DBAL\Platforms\AbstractPlatform->getDoctrineTypeMapping() at /var/www/html/vendor/doctrine/dbal/src/Schema/MySQLSchemaManager.php:186
Doctrine\DBAL\Schema\MySQLSchemaManager->_getPortableTableColumnDefinition() at /var/www/html/vendor/doctrine/dbal/src/Schema/AbstractSchemaManager.php:1408
Doctrine\DBAL\Schema\AbstractSchemaManager->_getPortableTableColumnList() at /var/www/html/vendor/doctrine/dbal/src/Schema/AbstractSchemaManager.php:423
Doctrine\DBAL\Schema\AbstractSchemaManager->doListTables() at /var/www/html/vendor/doctrine/dbal/src/Schema/MySQLSchemaManager.php:66
Doctrine\DBAL\Schema\MySQLSchemaManager->listTables() at /var/www/html/vendor/doctrine/dbal/src/Schema/AbstractSchemaManager.php:1651
Doctrine\DBAL\Schema\AbstractSchemaManager->createSchema() at /var/www/html/vendor/symfony/doctrine-messenger/Transport/Connection.php:473
Symfony\Component\Messenger\Bridge\Doctrine\Transport\Connection->updateSchema() at /var/www/html/vendor/symfony/doctrine-messenger/Transport/Connection.php:282
Symfony\Component\Messenger\Bridge\Doctrine\Transport\Connection->setup() at /var/www/html/vendor/symfony/doctrine-messenger/Transport/Connection.php:243
Symfony\Component\Messenger\Bridge\Doctrine\Transport\Connection->get() at /var/www/html/vendor/symfony/doctrine-messenger/Transport/DoctrineReceiver.php:45
Symfony\Component\Messenger\Bridge\Doctrine\Transport\DoctrineReceiver->get() at /var/www/html/vendor/symfony/doctrine-messenger/Transport/DoctrineTransport.php:42
Symfony\Component\Messenger\Bridge\Doctrine\Transport\DoctrineTransport->get() at /var/www/html/vendor/symfony/messenger/Worker.php:103
Symfony\Component\Messenger\Worker->run() at /var/www/html/vendor/symfony/messenger/Command/ConsumeMessagesCommand.php:229
Symfony\Component\Messenger\Command\ConsumeMessagesCommand->execute() at /var/www/html/vendor/symfony/console/Command/Command.php:312
Symfony\Component\Console\Command\Command->run() at /var/www/html/vendor/symfony/console/Application.php:1040
Symfony\Component\Console\Application->doRunCommand() at /var/www/html/vendor/symfony/framework-bundle/Console/Application.php:88
Symfony\Bundle\FrameworkBundle\Console\Application->doRunCommand() at /var/www/html/vendor/symfony/console/Application.php:314
Symfony\Component\Console\Application->doRun() at /var/www/html/vendor/symfony/framework-bundle/Console/Application.php:77
Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /var/www/html/vendor/symfony/console/Application.php:168
Symfony\Component\Console\Application->run() at /var/www/html/vendor/symfony/runtime/Runner/Symfony/ConsoleApplicationRunner.php:54
Symfony\Component\Runtime\Runner\Symfony\ConsoleApplicationRunner->run() at /var/www/html/vendor/autoload_runtime.php:29
require_once() at /var/www/html/bin/console:11
I don't understand why is it matter to doctrine (dbal andor messenger) what other tables I have in my DB, that has nothing to do with it.
regards,
mmarton
How to reproduce
- Have a table with an enum field in your db.
- install doctrine-messenger
- try to start it.
Possible Solution
Adding mapping types config prevents the issue:
dbal:
mapping_types:
enum: string
Manually creating the table works too.
Additional Context
symfony 6.2
php 8.1
mysql 8.0