我正在使用 Sql Server 和 pyodbc 的 Django 项目中运行南迁移。这是向后迁移,所以南方试图删除我的一些表。
South 执行以下方法以删除表:
def delete_table(self, table_name, cascade=True):
"""
Deletes the table 'table_name'.
"""
params = (self.quote_name(table_name), )
if cascade:
self.execute('DROP TABLE %s CASCADE;' % params)
else:
self.execute('DROP TABLE %s;' % params)
drop_table = alias('delete_table')
问题是 Sql Server 不支持级联丢弃,所以迁移失败并出现以下错误:
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'CASCADE'. (156) (SQLExecDirectW)")
我想为 South 写一个补丁,以便它与 Sql Server 一起工作。模拟 DROP CASCADE 的最佳方法是什么?我认为使用 python 或纯 SQL 的两种解决方案都是有效的。