Skip to content

Defining size in some entities causes new migration every time you run diff #2000

@profuel

Description

@profuel

There's a closed report here: #1031
Though I'm sure that please remove size is not a good solution, since not every person can find this thread and learn that some sizes are default and due to a specific behavior of the compare tool, migrations are produced.

To raise a degree of the issue, we faced a complete downtime of the system, when the migration:

ALTER TABLE product CHANGE custom_id custom_id INTEGER;

since the table contains 100 M lines.

Other cases, causing permanent migration, please see table definition (all in one)

    <table name="brand_slug" idMethod="native" allowPkInsert="true">
        <column name="id_brand_slug" type="INTEGER" primaryKey="true" autoIncrement="true"/>
        <column name="slug" type="LONGVARCHAR" required="true"/>
        <column name="price" type="INTEGER" size="11" required="true"/>
        <column name="created_at" type="TIMESTAMP" size="6" required="true"/>

        <index name="index-brand_slug-slug">
            <index-column name="slug"/>
        </index>
    </table>

Please copy schema, generate diff and apply changes to the DB.
Then just generate diff again.
I'm getting:

 DROP INDEX `index-brand_slug-slug` ON `brand_slug`;
 ALTER TABLE `brand_slug`
  CHANGE `created_at` `created_at` TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  CHANGE `price` `price` INTEGER(11) NOT NULL;
 CREATE INDEX `index-brand_slug-slug` ON `brand_slug` (`slug`);

My ideas of the way how to fix this:

  1. fail generation of the diff/schema - if the size is wrongly specified.
  2. ignore wrongly specified sizes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions