Fix sqlite create/drop index (#379)
* Update add/drop index template for sqlite * tests: add sqlite migrate/upgrade command test * tests: add timeout for sqlite migrate command test * tests: add test cases for add/drop unique field for sqlite * fix: sqlite failed to add unique field
This commit is contained in:
@@ -3,6 +3,7 @@ from typing import Any, List, Type, cast
|
||||
|
||||
from tortoise import BaseDBAsyncClient, Model
|
||||
from tortoise.backends.base.schema_generator import BaseSchemaGenerator
|
||||
from tortoise.backends.sqlite.schema_generator import SqliteSchemaGenerator
|
||||
|
||||
from aerich.utils import is_default_function
|
||||
|
||||
@@ -122,7 +123,12 @@ class BaseDDL:
|
||||
unique = ""
|
||||
template = self._MODIFY_COLUMN_TEMPLATE
|
||||
else:
|
||||
unique = "UNIQUE" if field_describe.get("unique") else ""
|
||||
# sqlite does not support alter table to add unique column
|
||||
unique = (
|
||||
"UNIQUE"
|
||||
if field_describe.get("unique") and self.DIALECT != SqliteSchemaGenerator.DIALECT
|
||||
else ""
|
||||
)
|
||||
template = self._ADD_COLUMN_TEMPLATE
|
||||
return template.format(
|
||||
table_name=db_table,
|
||||
|
||||
@@ -10,6 +10,8 @@ from aerich.exceptions import NotSupportError
|
||||
class SqliteDDL(BaseDDL):
|
||||
schema_generator_cls = SqliteSchemaGenerator
|
||||
DIALECT = SqliteSchemaGenerator.DIALECT
|
||||
_ADD_INDEX_TEMPLATE = 'CREATE {unique}INDEX "{index_name}" ON "{table_name}" ({column_names})'
|
||||
_DROP_INDEX_TEMPLATE = 'DROP INDEX IF EXISTS "{index_name}"'
|
||||
|
||||
def modify_column(self, model: "Type[Model]", field_object: dict, is_pk: bool = True):
|
||||
raise NotSupportError("Modify column is unsupported in SQLite.")
|
||||
|
||||
Reference in New Issue
Block a user