Niz*_* B. 33 symfony doctrine-orm
"Doctrine2&Symfony2"中的这个错误是什么意思?
无法将数据库值""转换为Doctrine Type数组
sol*_*arc 73
您可能已将类型字符串中的字段更改为实体中的类型数组,但已将数据存储在数据库中.尝试将空字符串从数据库转换为数组失败了.
如果它是一个开发数据库,只需删除它并再次创建它,或者只删除有问题的行.或者您可以将所有空字符串转换为a:0:{}(序列化的空数组).
UPDATE table SET column="a:0:{}" WHERE column = "";
Run Code Online (Sandbox Code Playgroud)
我不希望每个人都在他们的生产数据库上运行SQL.
@ORM\Column(type="array", nullable=TRUE)
Run Code Online (Sandbox Code Playgroud)
使列成为可空的更简单的解决方案,因此在运行"console doctrine:schema:update --force"之后,现有的DB条目将获得NULL值,而不是空字符串.并且doctrine可以处理将数据库值NULL转换为Doctrine Type数组.它应该只是一个NULL数组引用.并且PHP empty()不关心它的零大小数组还是NULL.
在MySQL中,我得到以下sql-dump:
ALTER TABLE my_table ADD my_new_column LONGTEXT DEFAULT NULL COMMENT '(DC2Type:array)'
Run Code Online (Sandbox Code Playgroud)