Tôi đã có một cơ sở dữ liệu PostgreSQL hiện với một bảng được tạo như thế này:Làm thế nào để tránh các câu lệnh DROP DEFAULT với Doctrine 2 Migrations diff trong lần chạy đầu tiên?
CREATE TABLE product (id SERIAL PRIMARY KEY, name VARCHAR(100) DEFAULT NULL)
Bảng này được mô tả trong một tập tin YML Doctrine2 trong một dự án Symfony2:
Acme\DemoBundle\Entity\Product:
type: entity
table: product
fields:
id:
id: true
type: integer
nullable: false
generator:
strategy: SEQUENCE
name:
type: string
length: 100
nullable: true
Khi tôi chạy lần đầu tiên Tác vụ khác của Doctrine Migrations Migration, tôi sẽ nhận được một tệp phiên bản không có dữ liệu trong các phương thức up
và down
. Nhưng những gì tôi nhận được thay vào đó là:
// ...
class Version20120807125808 extends AbstractMigration
{
public function up(Schema $schema)
{
// this up() migration is autogenerated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() != "postgresql");
$this->addSql("ALTER TABLE product ALTER id DROP DEFAULT");
}
public function down(Schema $schema)
{
// this down() migration is autogenerated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() != "postgresql");
$this->addSql("CREATE SEQUENCE product_id_seq");
$this->addSql("SELECT setval('product_id_seq', (SELECT MAX(id) FROM product))");
$this->addSql("ALTER TABLE product ALTER id SET DEFAULT nextval('product_id_seq')");
}
}
Tại sao có sự khác biệt được phát hiện? Làm thế nào tôi có thể tránh điều này? Tôi đã thử một số chiến lược chuỗi không thành công.
Cảm ơn bạn đã trả lời có giá trị như vậy !! –
@VaheShadunts Bạn được chào đón! –