这与关于how to switch a type from 'varchar' to 'char'的另一个问题非常相似。但是,我无法让我的XML配置工作。
app/console doctrine:schema:update --dump-sql
所说的其中一个字段与我的数据库不同的是:
ALTER TABLE user CHANGE password password VARCHAR(32) NOT NULL;
我很确定那是因为我对该字段的数据库定义已正确设置为char(32)
,但是Doctrine并不期望该字段被修复。
为了让Doctrine知道它已经修复,我添加了以下XML:
<field name="password" type="string" column="password" length="32" nullable="false">
<options>
<option name="fixed" value="true" />
</options>
</field>
这不正确吗?
一些奖励信息,如果重要:我正在使用MySQL。
答案 0 :(得分:0)
我偶然发现了一个合理的答案,但这绝对是一个黑客攻击。
<field name="password" type="string" column="password" length="32" nullable="false" column-definition="CHAR(32) NOT NULL" />
length
和nullable
在这里实际上被忽略了,但我想我会把它们留在我想要的冗长的地方。 column-definition
实际上是强制固定长度CHAR的原因。
不幸的是,在执行架构差异时似乎没有考虑到这个属性,因此它总是说该字段存在差异。
答案 1 :(得分:0)
偶然发现你的帖子。
原始帖子中的语法不正确。我想留下我的评论,以防其他人碰巧找到这个帖子。虽然接受的答案有效,但Doctrine模式中的“固定选项”也有效。
使用上面的代码snipet,它应该如下所示:
<field name="password" type="string" column="password" length="32" nullable="false">
<options>
<option name="fixed">true</option>
</options>
</field>
属性值无效。
希望这有助于冒险在这个线程上冒险!