Symfony2 学说插入实体日期时间错误的 MySQL 格式



我正在尝试将项目从mssql移植到mysql,使用MySQL Workbench移植数据库 - 一切顺利。尝试插入数据时,我得到 SQLSTATE[22007]:无效的日期时间格式:1292 不正确的日期时间值:列"x"的日期时间值"06/18/2015 14:49:22"。在教义配置Entityname.orm.yml中,我有:

x:
      type: datetime
      gedmo:
        timestampable:
          on: create

在实体类中:

/**
 * @var datetime $x
 */
private $x;

/**
 * Set x
 *
 * @param datetime $x
 */
public function setX($x)
{
    $this->x= $x;
}

导致错误的代码:

$em = $this->container->get('doctrine')->getEntityManager();
$new_entity = new EntityName();
$new_entity->setX(new DateTime());
$em->persist($new_entity );
$em->flush();

在_profiler我发现:插入entity_name (X) 值 (?)({"1":{"日期":"2015-06-18 14:49:22","timezone_type":3,"时区":"欧洲/布加勒斯特"}})

在此之后出现错误。

这在使用pdo_sqlsrv database_driver和 mssql 数据库之前有效。

编辑:有效的方法 - 运行设置sql_mode = NO_ENGINE_SUBSTITUTION; 设置全局sql_mode=NO_ENGINE_SUBSTITUTION; 在mysql数据库中 - 似乎错误的日期时间格式不是由symfony完成的。该错误是由 strict_trans_tables - SQL 模式更改 MySQL 执行 SQL 语句的方式引起的

在 MySQL 端做更好的方法?只需像这样设置您的字段:

date_x TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

然后:

$new_entity->setX(null);

您将在MySQL端获得当前日期:)

我认为您应该更改变量

/**
* @var DateTime $x
*/
private $x;

/**
* Set x
*
* @param datetime $x
*/
public function setX(DateTime $x)
{
   $this->x= $x;
}

作为呼唤

$em = $this->container->get('doctrine')->getEntityManager();
$new_entity = new EntityName();
$new_entity ->setX(new DateTime());
$em->persist($new_entity );
$em->flush();

相关内容

  • 没有找到相关文章

最新更新