一段时间以来,我一直在遇到关于“教义迁移”的问题。几周前,我以为我通过删除所有迁移文件来解决此问题,而是做了一个大的比较差异。但是看来问题又回来了。
注意:我已经检查了服务器版本
所以,我有这个表,是在我的大迁移文件中创建的
146ms: subscribe 10000
148ms: subscribe 100
253ms: complete 100
10152ms: fired 10000
10152ms: complete 10000
10152ms: subscribe 200
10153ms: fired 100
10353ms: fired 200
10353ms: complete 200
如您所见, CREATE TABLE hour_synthesis
(
id INT NOT NULL,
fiscal_year_id INT DEFAULT NULL,
month VARCHAR(255) NOT NULL,
year VARCHAR(255) NOT NULL,
worked_days VARCHAR(255) NOT NULL,
hours_to_sell VARCHAR(255) NOT NULL,
adapted_hours VARCHAR(255) NOT NULL,
percentage NUMERIC(5, 2) DEFAULT '100' NOT NULL,
PRIMARY KEY (id)
)
字段具有所需的所有内容,但是如果我开始比较...
percentage
请注意,迁移将设置类型,设置默认值,不设置为null,删除刚设置的默认值,再次设置类型,并使用public function up(Schema $schema) : void
{
// this up() migration is auto-generated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.');
$this->addSql('ALTER TABLE hour_synthesis ALTER percentage TYPE NUMERIC(5, 2)');
$this->addSql('ALTER TABLE hour_synthesis ALTER percentage SET DEFAULT \'100\'');
$this->addSql('ALTER TABLE hour_synthesis ALTER percentage SET NOT NULL');
$this->addSql('ALTER TABLE hour_synthesis ALTER percentage DROP DEFAULT');
$this->addSql('ALTER TABLE hour_synthesis ALTER percentage TYPE NUMERIC(5, 2)');
$this->addSql('COMMENT ON COLUMN hour_synthesis.percentage IS NULL');
$this->addSql('ALTER TABLE product ALTER stock_management SET DEFAULT \'false\'');
}
进行注释。
(最后一行没有关系,但这是这些迁移工件中的另一个)
当然,如果我进行了迁移,则可以,但是下一个差异带来了完全相同的代码。我尝试删除一些行,例如IS NULL
,以便实际设置默认值。但是再说一次,下一个差异完全相同。
我尝试更新架构以查看可以看到的...猜猜是什么
DROP DEFAULT
({$ db d:s:u --dump-sql
The following SQL statements will be executed:
ALTER TABLE hour_synthesis ALTER percentage TYPE NUMERIC(5, 2);
ALTER TABLE hour_synthesis ALTER percentage SET DEFAULT '100';
ALTER TABLE hour_synthesis ALTER percentage SET NOT NULL;
ALTER TABLE hour_synthesis ALTER percentage DROP DEFAULT;
ALTER TABLE hour_synthesis ALTER percentage TYPE NUMERIC(5, 2);
COMMENT ON COLUMN hour_synthesis.percentage IS NULL;
ALTER TABLE product ALTER stock_management SET DEFAULT 'false';
是我的docker别名)
我觉得自己陷入了僵化的迁移的无休止循环中,任何建议都值得欢迎,因为我真的不想每次我运行此问题时都删除我的迁移文件