tortoise / aerich

A database migrations tool for TortoiseORM, ready to production.
https://github.com/tortoise/aerich
Apache License 2.0
830 stars 95 forks source link

Table rename doesn't working #207

Open DeeJeezz opened 2 years ago

DeeJeezz commented 2 years ago

How to reproduce

1. init models

class User(Model):
    id = fields.IntField(pk=True)
    class Meta:
        table = 'user'

2.migrate/upgrade with this model

3. change model

class User(Model):
    id = fields.IntField(pk=True)
    class Meta:
        table = 'users'

4. trying to migrate

Traceback (most recent call last):
  File "/Users/shvetsov/PycharmProjects/osks_bot/venv/bin/aerich", line 8, in <module>
    sys.exit(main())
  File "/Users/shvetsov/PycharmProjects/osks_bot/venv/lib/python3.9/site-packages/aerich/cli.py", line 321, in main
    cli()
  File "/Users/shvetsov/PycharmProjects/osks_bot/venv/lib/python3.9/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/Users/shvetsov/PycharmProjects/osks_bot/venv/lib/python3.9/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/Users/shvetsov/PycharmProjects/osks_bot/venv/lib/python3.9/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/shvetsov/PycharmProjects/osks_bot/venv/lib/python3.9/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/shvetsov/PycharmProjects/osks_bot/venv/lib/python3.9/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/Users/shvetsov/PycharmProjects/osks_bot/venv/lib/python3.9/site-packages/click/decorators.py", line 21, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/Users/shvetsov/PycharmProjects/osks_bot/venv/lib/python3.9/site-packages/aerich/cli.py", line 45, in wrapper
    loop.run_until_complete(f(*args, **kwargs))
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/Users/shvetsov/PycharmProjects/osks_bot/venv/lib/python3.9/site-packages/aerich/cli.py", line 103, in migrate
    ret = await Migrate.migrate(name)
  File "/Users/shvetsov/PycharmProjects/osks_bot/venv/lib/python3.9/site-packages/aerich/migrate.py", line 130, in migrate
    cls.diff_models(cls._last_version_content, new_version_content)
  File "/Users/shvetsov/PycharmProjects/osks_bot/venv/lib/python3.9/site-packages/aerich/migrate.py", line 210, in diff_models
    table = change[0][1].get("through")
AttributeError: 'str' object has no attribute 'get'
DeeJeezz commented 2 years ago

And if I make migration by myself - it also doesn't rename the table. But it says that upgrade successfull.

qlxszxcode commented 1 year ago

I had the same problem, did you handle it?

daninoks commented 1 month ago

I have the same problem with aerich, version 0.7.2 on arm Mac.

aerich migrate --name $(name) works from 3-5 attempt without AttributeError. But sometimes don't until some more changes in models.

Any solutions?