You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I was testing some migrations with aerich and it seems that the upgrade is broken when I'm trying to delete some fields with constraints or indexes :
exemple :
class Protocol(BaseModel)
id = fields.IntField(pk=True)
protocol_name = fields.CharField(max_length=255, unique=True)
protocol_type: ProtocolTypeSelection = fields.CharEnumField(ProtocolTypeSelection)
protocol_token = fields.ForeignKeyField("models.Token", related_name="token_protocols", on_delete="CASCADE")
class Meta:
table = "protocol"
class PydanticMeta:
exclude = ("protocol_vaults", "protocol_positions")
class PydanticMetaOverride:
exclude = ("protocol_vaults", "protocol_positions")
I'm trying to delete protocol_token and it gives me this migration file
from tortoise import BaseDBAsyncClient
async def upgrade(db: BaseDBAsyncClient) -> str:
return """
ALTER TABLE "protocol" DROP CONSTRAINT "fk_protocol_token_f05b57e5";
ALTER TABLE "protocol" DROP COLUMN "protocol_token_id";
ALTER TABLE "investment_balance_history" ALTER COLUMN "investment_balance_history_date" SET DEFAULT '2023-07-28 15:03:55.053110';"""
async def downgrade(db: BaseDBAsyncClient) -> str:
return """
ALTER TABLE "protocol" ADD "protocol_token_id" INT NOT NULL;
ALTER TABLE "investment_balance_history" ALTER COLUMN "investment_balance_history_date" SET DEFAULT '2023-07-28 15:02:26.114393';
ALTER TABLE "protocol" ADD CONSTRAINT "fk_protocol_token_f05b57e5" FOREIGN KEY ("protocol_token_id") REFERENCES "token" ("id") ON DELETE CASCADE;"""
but then when I'm applying the upgrade, it raises this error :
constraint "fk_protocol_token_f05b57e5" of relation "protocol" does not exist
It's the same with protocol name, if I'm trying to change unique=True to False for protocol name, it will try to delete a non existing indexe.
The only way I found to make it work is to delete rows where it's trying to drop contraints or indexes on the migration file
I'm using postgres v13 and when I take a look inside the database, constraints and indexes are existing but with a different name than the one displayed in the migration file :
"protocol_protocol_token_id_fkey" FOREIGN KEY (protocol_token_id) REFERENCES token(id) ON DELETE CASCADE
Am I doing something wrong or is it a bug ?
The text was updated successfully, but these errors were encountered:
Had the same problem too postgres 15.1 aerich==0.7.2
The problem seems to be that aerich does not correctly identify the foreign key
This can be verified by executing this command
SELECT conname
FROM pg_constraint
WHERE conrelid = 'your_table_here'::regclass AND contype = 'f';
the name of the foreign key is different from the name in the migration file. By modifying this in the file and running aerich update the migration is successful.
Hello,
I was testing some migrations with aerich and it seems that the upgrade is broken when I'm trying to delete some fields with constraints or indexes :
exemple :
I'm trying to delete protocol_token and it gives me this migration file
from tortoise import BaseDBAsyncClient
but then when I'm applying the upgrade, it raises this error :
constraint "fk_protocol_token_f05b57e5" of relation "protocol" does not exist
It's the same with protocol name, if I'm trying to change unique=True to False for protocol name, it will try to delete a non existing indexe.
The only way I found to make it work is to delete rows where it's trying to drop contraints or indexes on the migration file
I'm using postgres v13 and when I take a look inside the database, constraints and indexes are existing but with a different name than the one displayed in the migration file :
"protocol_protocol_token_id_fkey" FOREIGN KEY (protocol_token_id) REFERENCES token(id) ON DELETE CASCADE
Am I doing something wrong or is it a bug ?
The text was updated successfully, but these errors were encountered: