【问题标题】:Doctrine/Symfony change character set for a single columnDoctrine/Symfony 更改单个列的字符集
【发布时间】:2016-02-20 19:46:36
【问题描述】:

在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 语句,但该语句不包含字符集定义。

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

【问题讨论】:

    标签: mysql symfony doctrine-orm doctrine


    【解决方案1】:

    在学说 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 似乎很好理解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-22
      • 1970-01-01
      • 2014-01-28
      • 2020-05-18
      • 1970-01-01
      • 2014-09-04
      相关资源
      最近更新 更多