当我尝试在Django中运行数据库特定操作时,我得到以下错误:
('42S02', "[42S02] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]无效的对象名称'django_session'。(208) (SQLExecDirectW);[42S02] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]无法准备语句。(8180)")
我一定错过了一个设置。默认情况下,Django会发送错误格式的SQL命令字符串,下面是两个错误格式的例子。第一个是当我尝试登录管理门户时:
SELECT TOP 1 (1) AS [a]
FROM [django_session]
WHERE [django_session].[session_key] = ?
当我试图从表dbo.Testing
加载数据时:
SELECT TOP 21 [TheAppName_testing].[id], [TheAppName_testing].[first_name], [TheAppName_testing].[last_name]
FROM [TheAppName_testing]
WHERE [TheAppName_testing].[id] = %s
我对几个表使用不同的模式。我如何去指向Django正确的设置,使它实际上可以指向SQL Server中正确的表?
我发现使用Django指向特定模式的一个简单方法是只向数据库端的用户提供对所需模式的访问权。使用该用户在Django的settings.py中连接到DB,当你迁移时,它将只能访问你想要的模式。