Open massiccio opened 1 year ago
I have tried the workaround described here, i.e., downgrading to version 0.6.3. That fixed the init-db, however the upgrade still fails.
Installing collected packages: aerich
Attempting uninstall: aerich
Found existing installation: aerich 0.7.0
Uninstalling aerich-0.7.0:
Successfully uninstalled aerich-0.7.0
Successfully installed aerich-0.6.3
aerich init -s src/ -t tci.sqlite.database.TORTOISE_ORM
Success create migrate location ./migrations
Success write config to pyproject.toml
aerich init-db
Success create app migrate location migrations/models
Success generate schema for app "models"
aerich migrate --name opsgenie_comment_column_dropped
Success migrate 5_20230518173359_opsgenie_comment_column_dropped.sql
(opsgenie_to_jira) mic@U333633:my_dir$ aerich upgrade
Traceback (most recent call last):
File "my_dir/lib/python3.10/site-packages/tortoise/backends/sqlite/client.py", line 34, in translate_exceptions_
return await func(self, query, *args)
File "my_dir/lib/python3.10/site-packages/tortoise/backends/sqlite/client.py", line 155, in execute_script
await connection.executescript(query)
File "my_dir/lib/python3.10/site-packages/aiosqlite/core.py", line 216, in executescript
cursor = await self._execute(self._conn.executescript, sql_script)
File "my_dir/lib/python3.10/site-packages/aiosqlite/core.py", line 129, in _execute
return await future
File "my_dir/lib/python3.10/site-packages/aiosqlite/core.py", line 102, in run
result = function()
sqlite3.OperationalError: error in index idx_alert_acknowl_8a515a after drop column: no such column: acknowledged
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "my_dir/bin/aerich", line 8, in <module>
sys.exit(main())
File "my_dir/lib/python3.10/site-packages/aerich/cli.py", line 257, in main
cli()
File "my_dir/lib/python3.10/site-packages/click/core.py", line 1130, in __call__
return self.main(*args, **kwargs)
File "my_dir/lib/python3.10/site-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
File "my_dir/lib/python3.10/site-packages/click/core.py", line 1657, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "my_dir/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "my_dir/lib/python3.10/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "my_dir/lib/python3.10/site-packages/click/decorators.py", line 26, in new_func
return f(get_current_context(), *args, **kwargs)
File "my_dir/lib/python3.10/site-packages/aerich/cli.py", line 31, in wrapper
loop.run_until_complete(f(*args, **kwargs))
File "/usr/lib/python3.10/asyncio/base_events.py", line 646, in run_until_complete
return future.result()
File "my_dir/lib/python3.10/site-packages/aerich/cli.py", line 97, in upgrade
migrated = await command.upgrade()
File "my_dir/lib/python3.10/site-packages/aerich/__init__.py", line 55, in upgrade
await conn.execute_script(upgrade_query)
File "my_dir/lib/python3.10/site-packages/tortoise/backends/sqlite/client.py", line 36, in translate_exceptions_
raise OperationalError(exc)
tortoise.exceptions.OperationalError: error in index idx_alert_acknowl_8a515a after drop column: no such column: acknowledged
I have also tried not to have that column as an index, and in spite of the migration throwing an error, the upgrade succeeded
aerich migrate --name opsgenie_comment_column_dropped
Traceback (most recent call last):
File "my_dir/bin/aerich", line 8, in <module>
sys.exit(main())
File "my_dir/lib/python3.10/site-packages/aerich/cli.py", line 257, in main
cli()
File "my_dir/lib/python3.10/site-packages/click/core.py", line 1130, in __call__
return self.main(*args, **kwargs)
File "my_dir/lib/python3.10/site-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
File "my_dir/lib/python3.10/site-packages/click/core.py", line 1657, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "my_dir/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "my_dir/lib/python3.10/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "my_dir/lib/python3.10/site-packages/click/decorators.py", line 26, in new_func
return f(get_current_context(), *args, **kwargs)
File "my_dir/lib/python3.10/site-packages/aerich/cli.py", line 31, in wrapper
loop.run_until_complete(f(*args, **kwargs))
File "/usr/lib/python3.10/asyncio/base_events.py", line 646, in run_until_complete
return future.result()
File "my_dir/lib/python3.10/site-packages/aerich/cli.py", line 86, in migrate
ret = await command.migrate(name)
File "my_dir/lib/python3.10/site-packages/aerich/__init__.py", line 126, in migrate
return await Migrate.migrate(name)
File "my_dir/lib/python3.10/site-packages/aerich/migrate.py", line 132, in migrate
cls.diff_models(cls._last_version_content, new_version_content)
File "my_dir/lib/python3.10/site-packages/aerich/migrate.py", line 184, in diff_models
old_models.pop(_aerich, None)
AttributeError: 'NoneType' object has no attribute 'pop'
aerich upgrade
Success upgrade 5_20230518173819_None.sql
Try remove migratetions/models and aerich table and rerun migrate
I tried that, but to no avail.
Just in case you wish to reproduce the problem, here is a simple model.
class Alert(models.Model):
id = fields.IntField(pk=True)
opsgenie_id = fields.CharField(max_length=50, index=True, unique=True, null=False)
priority = fields.SmallIntField(null=False, index=True)
message = fields.TextField(null=False)
team = fields.CharField(max_length=20, null=False)
site = fields.CharField(max_length=10, null=False)
stage = fields.CharField(max_length=3, null=False)
created_at = fields.DatetimeField(null=True)
updated_at = fields.DatetimeField(null=True)
jira_id = fields.CharField(max_length=30)
acknowledged = fields.BooleanField(default=False, index=True, null=False) # try to remove this field
orm_config = {
"connections": {
"default": {
"engine": "tortoise.backends.sqlite",
"credentials": {"file_path": "db.sqlite3"},
}
},
"apps": {
"models": {
"models": ["tci.sqlite.models", "aerich.models"],
"default_connection": "default",
}
},
}
Same happened to me. It'd be great if someone can provide any sort of workaround.
Hello,
I have been observing the same behavior reported at here while using aerich with sqlite I have no problem when using the same models with postgres.
Test with no changes, working as expected
Removing the "acknowledged" column from the model