一次又一次地运行bin/console doctrine:schema:update --force
,即使在清除缓存/重启php-fpm 后也始终输出39 queries executed
。所以它总是一次又一次地执行相同的SQL请求......
SQL看似喜欢(来自--dump-sql
)
ALTER TABLE apply_queue CHANGE cv_id cv_id INT DEFAULT NULL, CHANGE team_id team_id INT DEFAULT NULL;
....
和很多类似的行。
ApplyQueue
类看起来像:
/**
* AppBundle\Entity\ApplyQueue.
*
* @ORM\Entity(repositoryClass="AppBundle\Entity\ApplyQueueRepository")
* @ORM\Table(name="apply_queue")
*/
class ApplyQueue
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Cv")
* @ORM\JoinColumn(name="cv_id", referencedColumnName="id", onDelete="CASCADE")
*/
protected $cv;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Team")
* @ORM\JoinColumn(name="team_id", referencedColumnName="id", onDelete="CASCADE")
*/
protected $team;
...
}
DBAL
config:
doctrine:
dbal:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
types:
json: Sonata\Doctrine\Types\JsonType
review_status: AppBundle\Model\Enum\ReviewStatusEnumType
mapping_types:
review_status: string
表的结构:
这是一个已经升级到Symfony 3.4和MariaDB 10.2的“旧”项目。
由于
答案 0 :(得分:3)
Doctrine尚不支持MariaDB 10.2,导致此问题。
答案 1 :(得分:0)
几周前我遇到过类似的问题。在我的情况下,这是在更新后
--force
它显示某些列必须设置为非空
--dump-sql.
一次又一次。我不记得问题是什么,但它是这样的:
我将同一列设置为null并具有默认值。没有可能以某种方式工作的学说,但学说要求表格设计得很好。 我要说的是检查你的桌子。这种类型可能存在一些错误。古德勒克!
答案 2 :(得分:0)
检查你的数据库表类型 - 我有一个问题,数据库类型不支持尝试设置的功能原则。
也许在数据库服务器上运行sql并查看它是否“正常”/更改任何内容,然后重新运行
答案 3 :(得分:0)
在app / config / config.yml中,检查是否启用了doctrine缓存,如下所示:
doctrine:
orm:
metadata_cache_driver: redis
如果是这样,您将不得不刷新redis缓存:
php bin/console redis:flushdb --client=CLIENT_NAME -n