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



在mysql中,我可以做:

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

有没有办法在Doctrine/Symfony中做到这一点?我已经尝试过(除了谷歌搜索):

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

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

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

在教义 irc 频道上讨论过这个问题之后:

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

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

因此,这个功能似乎在教义中计划过,但从未实现过。

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

至于我的用例,我决定使用binary列类型而不是 ascii 作为我的索引,Doctrine 似乎对此理解得很好。