象征和学说无效地迁移



学说正在以符号迁移生成迁移,并且没有任何变化的运行迁移,因此在下一个差异期间,它是相同的。如何使学说不产生这种迁移?手动运行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")

相关内容

  • 没有找到相关文章