【发布时间】:2017-08-09 08:05:27
【问题描述】:
我在我的项目中使用 symfony 2.4 和 postgresql。在我的语言环境中一切正常,但在服务器上却报错
"PHP message: PHP Fatal error: Uncaught exception 'Doctrine\ORM\Query\QueryException' with message 'SELECT p.id, p.username, p.email, p.isEmailConfirmed FROM CityDomGameBundle:Player p WHERE p.email = (:email) AND p.username != (:username)' in /var/...
这里发生错误
$duplicatedEmails = $em->createQueryBuilder()
->select('p.id, p.username, p.email, p.isEmailConfirmed')
->from('CityDomGameBundle:Player', 'p')
->where('p.email = (:email)')
->andWhere('p.username != (:username)')
->setParameter(':email', $email)
->setParameter(':username', $username)
->getQuery()
->getResult();
我在表中添加了新列 isEmailConfirmed,所以 symfony 似乎无法识别它。如果我从select 语句中删除p.isEmailConfirmed,它将起作用。
这里是实体代码
/**
* @var boolean $isEmailConfirmed
*
* @ORM\Column(name="isemailconfirmed", type="boolean")
*/
private $isEmailConfirmed;
和方法
/**
* @return boolean
*/
public function getIsEmailConfirmed()
{
return $this->isEmailConfirmed;
}
/**
* @param $isEmailConfirmed
* @return $this
*/
public function setIsEmailConfirmed($isEmailConfirmed)
{
$this->isEmailConfirmed = $isEmailConfirmed;
return $this;
}
我尝试cache:clear,但没有帮助。有什么想法吗?
更新
运行 php app/console dictionary:schema:update --force 后显示错误
[Doctrine\DBAL\Exception\NotNullConstraintViolationException]
An exception occurred while executing 'ALTER TABLE player ADD
isemailconfirmed BOOLEAN NOT NULL':
SQLSTATE[23502]: Not null violation: 7 ERROR: column
"isemailconfirmed" contains null values
[Doctrine\DBAL\Driver\PDOException]
SQLSTATE[23502]: Not null violation: 7 ERROR: column
"isemailconfirmed" contains null values
但此列的默认值为false
这是我添加列时的查询
alter table player add column isEmailConfirmed boolean default false;
【问题讨论】:
-
您更新了服务器上的 schame 吗? bin/console 原则:schema:update --force ?
-
您的
isemailconfirmed在您的数据库中吗? -
@Alessandro Minoccheri 我现在就试试
-
@t-n-y 是的,是的
-
`执行“ALTER TABLE player ADD isemailconfirmed BOOLEAN NOT NULL”时发生异常:SQLSTATE[23502]:非空违规:7 错误:列“isemailconfirmed”包含空值`
标签: php postgresql symfony doctrine