Doctrine正在symfony中生成迁移,并且在运行迁移时没有任何变化,所以在下一个diff中它是相同的。如何让Doctrine不生成这种迁移?手动运行alter table命令不会删除列排序规则。
bin/console doctrine:migration:diff
达
$this->addSql('ALTER TABLE session CHANGE sess_id sess_id VARCHAR(128) NOT NULL');
向下
$this->addSql('ALTER TABLE session CHANGE sess_id sess_id VARCHAR(128) NOT NULL COLLATE utf8_unicode_ci');
表格如下:
show create table session;
CREATE TABLE
session
(sess_id
varchar(128)COLLATE utf8_unicode_ci NOT NULL,sess_data
longblob NOT NULL,sess_time
int(11)NOT NULL,sess_lifetime
int(11)NOT NULL, 主要关键(sess_id
) )ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci
实体是在添加了如下所示的排序规则之后
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Session
*
* @ORM\Table(name="session")
* @ORM\Entity(repositoryClass="App\Repository\SessionRepository")
*/
class Session
{
/**
* @var string
*
* @ORM\Column(name="sess_id", type="string", length=128, options={"collation":"utf8_unicode_ci"})
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="sess_data", type="blob")
*/
private $sessData;
/**
* @var int
*
* @ORM\Column(name="sess_time", type="integer")
*/
private $sessTime;
/**
* @var int
*
* @ORM\Column(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;
}
}
答案 0 :(得分:2)
我遇到了类似的问题。
我用:
为了解决我的问题,评论或在{{1}的属性server_version
上设置值&#39; mariadb-10.2.14&#39; }}
答案 1 :(得分:0)
尝试将其添加到列注释:
/**
* @var string
*
* @ORM\Column(options={"collation":"utf8_unicode_ci"})
*/
private $sess_id;
答案 2 :(得分:0)
这是因为您创建 $id 列,输入字符串,使用 @ORM\GeneratedValue(strategy="AUTO")
删除:@ORM\GeneratedValue(strategy="AUTO")