学说正在以符号迁移生成迁移,并且没有任何变化的运行迁移,因此在下一个差异期间,它是相同的。如何使学说不产生这种迁移?手动运行Alter表命令不会删除列整理。
bin/console doctrine:migration:diff
向上
$this->addSql('ALTER TABLE session CHANGE sess_id sess_id VARCHAR(128) NOT NULL');
down
$this->addSql('ALTER TABLE session CHANGE sess_id sess_id VARCHAR(128) NOT NULL COLLATE utf8_unicode_ci');
表看起来像:
show create table session;
创建表
session
(sess_id
VARCHAR(128(整理UTF8_UNICODE_CI不为空,sess_data
longblob不为空,sess_time
int(11(不为null,sess_lifetime
int(11(不为null, 主键(sess_id
( (引擎= innodb默认charset = utf8 colate = utf8_unicode_ci
实体是在添加如下
的整理之后<?php
namespace AppEntity;
use DoctrineORMMapping as ORM;
/**
* Session
*
* @ORMTable(name="session")
* @ORMEntity(repositoryClass="AppRepositorySessionRepository")
*/
class Session
{
/**
* @var string
*
* @ORMColumn(name="sess_id", type="string", length=128, options={"collation":"utf8_unicode_ci"})
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORMColumn(name="sess_data", type="blob")
*/
private $sessData;
/**
* @var int
*
* @ORMColumn(name="sess_time", type="integer")
*/
private $sessTime;
/**
* @var int
*
* @ORMColumn(name="sess_lifetime", type="integer")
*/
private $sessLifetime;
/**
* Get id
*
* @return string
*/
public function getId()
{
return $this->id;
}
/**
* Get sessData
*
* @return string
*/
public function getSessData()
{
return $this->sessData;
}
/**
* Set sessData
*
* @param string $sessData
*
* @return Session
*/
public function setSessData($sessData)
{
$this->sessData = $sessData;
return $this;
}
/**
* Get sessTime
*
* @return int
*/
public function getSessTime()
{
return $this->sessTime;
}
/**
* Set sessTime
*
* @param integer $sessTime
*
* @return Session
*/
public function setSessTime($sessTime)
{
$this->sessTime = $sessTime;
return $this;
}
/**
* Get sessLifetime
*
* @return int
*/
public function getSessLifetime()
{
return $this->sessLifetime;
}
/**
* Set sessLifetime
*
* @param integer $sessLifetime
*
* @return Session
*/
public function setSessLifetime($sessLifetime)
{
$this->sessLifetime = $sessLifetime;
return $this;
}
}
我也有类似的问题。
我使用:
-
SYMFONY = 3.4.9(flex(
- 学说/orm =^2.5.11
- php = 7.2.5
- curl = 7.59.0
- apcu = 5.1.11
- xdebug = 2.6.0
- 作曲家= 1.6.5
- nginx = 1.14.0
- Mariadb = 10.2.14
解决方案:
为了纠正我的问题,注释或设置值'MariaDB-10.2.14'在config/packages/doctrine.yaml
中的属性server_version
上。
高度启发:https://github.com/doctrine/dbal/issues/2985
尝试将其添加到列注释中:
/**
* @var string
*
* @ORMColumn(options={"collation":"utf8_unicode_ci"})
*/
private $sess_id;
这是因为您创建$ id列,类型字符串,使用@ORMGeneratedValue(strategy="AUTO")
删除:@ORMGeneratedValue(strategy="AUTO")