Php 一般错误:1366不正确的整数值与原则2.1和Zend表单更新

Php 一般错误:1366不正确的整数值与原则2.1和Zend表单更新,php,mysql,zend-framework,doctrine-orm,zend-form,Php,Mysql,Zend Framework,Doctrine Orm,Zend Form,我正在处理提交的Zend表单,该表单使用以下代码更新条令记录,其中$query是使用条令查询生成器生成的查询: $record_array = $query->getResult(); $this->_record = $record_array[0]; if($this->getRequest()->isPost()) { if ($this->_form->isValid($this->_request->getPost

我正在处理提交的Zend表单,该表单使用以下代码更新条令记录,其中$query是使用条令查询生成器生成的查询:

$record_array = $query->getResult();
$this->_record = $record_array[0];
if($this->getRequest()->isPost())
    {
        if ($this->_form->isValid($this->_request->getPost()))
        {
            $newEntity = $this->_form->update($this->_record);
            $this->_em->flush(); 
            $this->view->success = 'Record Saved.';
        } else {
            $this->view->errors = $this->_form->getErrors();
        }        
    }
如果记录中没有整数,即只有字符串,则上述方法可以正常工作。但是,如果我在表单中包含映射为doctrine实体中整数的字段,则会出现上述错误

任何帮助都将不胜感激

更新:

/**
 * @var integer $solicitorid
 *
 * @Column(name="SolicitorID", type="integer", nullable=false)
 * @Id
 * @GeneratedValue(strategy="IDENTITY")
 */
private $solicitorid;

/**
 * @var string $solicitor
 *
 * @Column(name="Solicitor", type="string", length=160, nullable=true)
 */
private $solicitor;

/**
 * @var string $address
 *
 * @Column(name="Address", type="string", length=160, nullable=true)
 */
private $address;

/**
 * @var string $town
 *
 * @Column(name="Town", type="string", length=100, nullable=true)
 */
private $town;

/**
 * @var string $county
 *
 * @Column(name="County", type="string", length=100, nullable=true)
 */
private $county;

/**
 * @var string $postcode
 *
 * @Column(name="Postcode", type="string", length=100, nullable=true)
 */
private $postcode;

/**
 * @var string $dxaddress
 *
 * @Column(name="DXAddress", type="string", length=150, nullable=true)
 */
private $dxaddress;

/**
 * @var string $phone
 *
 * @Column(name="phone", type="string", length=30, nullable=true)
 */
private $phone;

/**
 * @var string $fax
 *
 * @Column(name="fax", type="string", length=30, nullable=true)
 */
private $fax;

/**
 * @var string $email
 *
 * @Column(name="email", type="string", length=255, nullable=true)
 */
private $email;

/**
 * @var string $password
 *
 * @Column(name="password", type="string", length=30, nullable=false)
 */
private $password;

/**
 * @var integer $leadStatus
 *
 * @Column(name="lead_status", type="integer", nullable=true)
 */
private $leadStatus;

/**
 * @var string $termsref
 *
 * @Column(name="termsRef", type="string", length=10, nullable=true)
 */
private $termsref;

/**
 * @var integer $termsconditions
 *
 * @Column(name="termsconditions", type="integer", nullable=true)
 */
private $termsconditions;

/**
 * @var date $termssent
 *
 * @Column(name="termsSent", type="date", nullable=true)
 */
private $termssent;

/**
 * @var date $termssigneddate
 *
 * @Column(name="termssigneddate", type="date", nullable=true)
 */
private $termssigneddate;

/**
 * @var integer $paymentterms
 *
 * @Column(name="paymentterms", type="integer", nullable=true)
 */
private $paymentterms;

/**
 * @var integer $discountterms
 *
 * @Column(name="discountterms", type="integer", nullable=true)
 */
private $discountterms;

/**
 * @var float $discountrate
 *
 * @Column(name="discountrate", type="float", nullable=true)
 */
private $discountrate;

/**
 * @var integer $accountscontact
 *
 * @Column(name="AccountsContact", type="integer", nullable=true)
 */
private $accountscontact;

/**
 * @var date $warned
 *
 * @Column(name="warned", type="date", nullable=true)
 */
private $warned;

/**
 * @var float $feerate
 *
 * @Column(name="FeeRate", type="float", nullable=true)
 */
private $feerate;

/**
 * @var string $labourrate
 *
 * @Column(name="LabourRate", type="string", length=100, nullable=true)
 */
private $labourrate;

/**
 * @var text $specialinst
 *
 * @Column(name="SpecialInst", type="text", nullable=true)
 */
private $specialinst;

/**
 * @var text $reportinst
 *
 * @Column(name="ReportInst", type="text", nullable=true)
 */
private $reportinst;

/**
 * @var boolean $autostatement
 *
 * @Column(name="AutoStatement", type="boolean", nullable=true)
 */
private $autostatement;

/**
 * @var datetime $lastmodifed
 *
 * @Column(name="lastModifed", type="datetime", nullable=false)
 */
private $lastmodifed;
上面是实体。
当我尝试更新整型字段时会出现问题。

您使用的是MySQL吗?这可能是因为MySQL是在严格模式下运行的。 从phpMyAdmin或您正在使用的任何db管理员运行这些查询,以检查数据库是否处于严格模式:

SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;
如果它返回包含
STRICT\u TRANS\u表的内容
,您可以尝试运行:

SET @@global.sql_mode= 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

它确实包含了严格的表,你的建议把它关掉了。这实际上有什么影响,为什么一开始就应该启用它?这非常准确:“在非严格模式下,MySQL服务器将错误的输入值转换为最接近的合法值(根据列定义确定)例如,如果您试图将负值存储到无符号列中,MySQL会将其转换为零,这是该列最接近的合法值。“在严格模式下,它将直接跳过这些转换并抛出您看到的错误。也许你可以发布你试图更新的实体的映射,以及你在表单中发送给它的实际数据。为了找到这个解决方案,你已经工作了好几个小时。。。由于某些原因,我的AWS RDS实例已更改配置。谢谢