运行doctrine:mapping:import
时出现错误:
请求未知的数据库类型枚举,Doctrine \ DBAL \ Platforms \ MySqlPlatform可能不支持它。
我似乎需要将use_native_enum
设置为true
一些方法。但是,所有文档和博客文章都引用了Symfony< 1.4。在Symfony 2中有什么解决方案吗?
答案 0 :(得分:118)
对于Symfony 2项目,将其添加到app/config.yml
中的doctrine dbal配置中:
doctrine:
dbal:
mapping_types:
enum: string
我的完整学说配置如下所示:
# Doctrine Configuration
doctrine:
dbal:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
mapping_types:
enum: string
set: string
varbinary: string
tinyblob: text
orm:
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true
代码改编自here
然后运行:
app/console doctrine:schema:update --force --dump-sql --ansi
答案 1 :(得分:-1)
考虑到Doctrine cookbook仅提供关于如何使枚举解释为字符串的部分答案,无论Doctrine如何配置,以下内容都应该有效。
错误指向文件名称:Doctrine\DBAL\Platforms\MySqlPlatform
。php - 在那里,您会发现默认列表嵌入在函数initializeDoctrineTypeMappings
中,如下所示:
$this->doctrineTypeMapping = array(
'tinyint' => 'boolean',
'smallint' => 'smallint',
'mediumint' => 'integer',
'int' => 'integer',
(...)
为所有学说用户添加简单的枚举支持,无论其他设置如何,都可以通过扩展列表来实现:
'enum' => 'string'