Doctrine / Symfony更改单个列的字符集

时间:2016-02-20 19:46:36

标签: mysql symfony doctrine-orm doctrine

在mysql中,我可以这样做:

ALTER TABLE T MODIFY column_name VARCHAR(32) CHARACTER SET ASCII;

有没有办法在Doctrine / Symfony中执行此操作?我试过(除了谷歌搜索):

/**
 * @ORM\Column(type="string", unique=true, length=32, nullable=false, options={"charset"="ASCII"} )
 */

虽然doctrine:schema:update生成ALTER TABLE语句,但不起作用,但该语句不包含字符集定义。

为什么我需要这个:我有一个字符串(32)列,我想索引和唯一。 ASCII col的Mysql索引长度为32个字节,而utf8 col的长度为32 * 3 = 96个字节。有点浪费:))

1 个答案:

答案 0 :(得分:0)

在关于学说irc频道的讨论之后:

https://github.com/doctrine/dbal/blob/master/lib/Doctrine/DBAL/Platforms/AbstractPlatform.php#L2549

public function getColumnCharsetDeclarationSQL($charset)
{
    return '';
}

所以看来这个功能是在Doctrine计划的,但从未实现过。

有一个未解决的问题: https://github.com/doctrine/dbal/issues/2326

至于我的用例,我决定使用binary列类型而不是ascii作为我的索引,Doctrine似乎很清楚。