Fix migrate to new database error

This commit is contained in:
long2ice 2020-10-14 20:33:23 +08:00
parent 768747140a
commit 6339dc86a8
4 changed files with 18 additions and 11 deletions

View File

@ -2,6 +2,10 @@
## 0.3 ## 0.3
### 0.3.2
- Fix migrate to new database error. (#62)
### 0.3.1 ### 0.3.1
- Fix first version error. - Fix first version error.

View File

@ -1 +1 @@
__version__ = "0.3.1" __version__ = "0.3.2"

View File

@ -4,7 +4,7 @@ import re
from datetime import datetime from datetime import datetime
from importlib import import_module from importlib import import_module
from io import StringIO from io import StringIO
from typing import Dict, List, Tuple, Type from typing import Dict, List, Optional, Tuple, Type
import click import click
from tortoise import ( from tortoise import (
@ -15,6 +15,7 @@ from tortoise import (
Model, Model,
Tortoise, Tortoise,
) )
from tortoise.exceptions import OperationalError
from tortoise.fields import Field from tortoise.fields import Field
from aerich.ddl import BaseDDL from aerich.ddl import BaseDDL
@ -53,8 +54,11 @@ class Migrate:
) )
@classmethod @classmethod
async def get_last_version(cls) -> Aerich: async def get_last_version(cls) -> Optional[Aerich]:
return await Aerich.filter(app=cls.app).first() try:
return await Aerich.filter(app=cls.app).first()
except OperationalError:
pass
@classmethod @classmethod
def remove_old_model_file(cls, app: str, location: str): def remove_old_model_file(cls, app: str, location: str):
@ -67,17 +71,16 @@ class Migrate:
async def init_with_old_models(cls, config: dict, app: str, location: str): async def init_with_old_models(cls, config: dict, app: str, location: str):
await Tortoise.init(config=config) await Tortoise.init(config=config)
last_version = await cls.get_last_version() last_version = await cls.get_last_version()
cls.app = app
cls.migrate_location = os.path.join(location, app)
if last_version: if last_version:
content = last_version.content content = last_version.content
with open(cls.get_old_model_file(app, location), "w") as f: with open(cls.get_old_model_file(app, location), "w") as f:
f.write(content) f.write(content)
migrate_config = cls._get_migrate_config(config, app, location) migrate_config = cls._get_migrate_config(config, app, location)
cls.app = app cls.migrate_config = migrate_config
cls.migrate_config = migrate_config await Tortoise.init(config=migrate_config)
cls.migrate_location = os.path.join(location, app)
await Tortoise.init(config=migrate_config)
connection = get_app_connection(config, app) connection = get_app_connection(config, app)
cls.dialect = connection.schema_generator.DIALECT cls.dialect = connection.schema_generator.DIALECT

View File

@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = "aerich" name = "aerich"
version = "0.3.1" version = "0.3.2"
description = "A database migrations tool for Tortoise ORM." description = "A database migrations tool for Tortoise ORM."
authors = ["long2ice <long2ice@gmail.com>"] authors = ["long2ice <long2ice@gmail.com>"]
license = "Apache-2.0" license = "Apache-2.0"