我正在使用 Django 和 SQL Server 创建一个简单的 django 模型,如下所示:
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length = 40)
last_name = models.CharField(max_length = 40)
class Meta:
managed = False
db_table = 'api].[persons'
我的迁移文件是:
from django.db import migrations, models
class Migration(migrations.Migration):
initial = False
dependencies = [
]
operations = [
migrations.CreateModel(
name='Person',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False,
verbose_name='ID')),
('first_name', models.CharField(max_length=40)),
('last_name', models.CharField(max_length=40)),
],
options={
'db_table': 'api].[persons',
'managed': False,
},
),
]
现在,当我尝试使用migrate
命令运行迁移时,出现以下错误:
Traceback (most recent call last):
File "C:\Python3\lib\site-packages\django\db\backends\utils.py", line 83, in _execute
return self.cursor.execute(sql)
File "C:\Python3\lib\site-packages\sql_server\pyodbc\base.py", line 547, in execute
return self.cursor.execute(sql, params)
pyodbc.Error: ('21000', '[21000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Subquery
returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression. (512) (SQLExecDirectW); [21000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]The statement has been terminated. (3621)')
这是我的数据库设置的样子:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'Myname',
'HOST': myhost,
'USER': 'user',
'PASSWORD': 'pass',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
'unicode_results': True,
}
},
'test': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'name',
'HOST': 'host2',
'USER': 'test_user',
'PASSWORD': 'test_pass',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
'unicode_results': True,
}
},
}
我没有在模型中的任何地方使用过子查询,但我不确定为什么会出现这个错误。
注意: Django==2.1.15 django-pyodbc-azure==2.1.0.0