SQL Server使用客户端数据库中的db_owner前缀进行选择

2024-09-28 19:08:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我的Django应用程序通常在SQLite3上运行,但这次我不得不将其转换为使用sqlserver。在测试服务器上一切正常,但当我的朋友将此数据库复制到客户端服务器时,我出现了一个错误:

(norm)esd@server:~/Desktop/norm/myproject> python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
Unhandled exception in thread started by <function wrapper at 0x7fc57eb4f8c0>
Traceback (most recent call last):
  File "/home/esd/Desktop/norm/lib64/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper
    fn(*args, **kwargs)
  File "/home/esd/Desktop/norm/lib64/python2.7/site-packages/django/core/management/commands/runserver.py", line 117, in inner_run
    self.check_migrations()
  File "/home/esd/Desktop/norm/lib64/python2.7/site-packages/django/core/management/commands/runserver.py", line 163, in check_migrations
    executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
  File "/home/esd/Desktop/norm/lib64/python2.7/site-packages/django/db/migrations/executor.py", line 20, in __init__
    self.loader = MigrationLoader(self.connection)
  File "/home/esd/Desktop/norm/lib64/python2.7/site-packages/django/db/migrations/loader.py", line 49, in __init__
    self.build_graph()
  File "/home/esd/Desktop/norm/lib64/python2.7/site-packages/django/db/migrations/loader.py", line 176, in build_graph
    self.applied_migrations = recorder.applied_migrations()
  File "/home/esd/Desktop/norm/lib64/python2.7/site-packages/django/db/migrations/recorder.py", line 66, in applied_migrations
    return set(tuple(x) for x in self.migration_qs.values_list("app", "name"))
  File "/home/esd/Desktop/norm/lib64/python2.7/site-packages/django/db/models/query.py", line 258, in __iter__
    self._fetch_all()
  File "/home/esd/Desktop/norm/lib64/python2.7/site-packages/django/db/models/query.py", line 1074, in _fetch_all
    self._result_cache = list(self.iterator())
  File "/home/esd/Desktop/norm/lib64/python2.7/site-packages/django/db/models/query.py", line 128, in __iter__
    for row in compiler.results_iter():
  File "/home/esd/Desktop/norm/lib64/python2.7/site-packages/django/db/models/sql/compiler.py", line 802, in results_iter
    results = self.execute_sql(MULTI)
  File "/home/esd/Desktop/norm/lib64/python2.7/site-packages/django/db/models/sql/compiler.py", line 848, in execute_sql
    cursor.execute(sql, params)
  File "/home/esd/Desktop/norm/lib64/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/home/esd/Desktop/norm/lib64/python2.7/site-packages/django/db/utils.py", line 95, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/home/esd/Desktop/norm/lib64/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/home/esd/Desktop/norm/lib64/python2.7/site-packages/sql_server/pyodbc/base.py", line 537, in execute
    return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: ('42S02', "[42S02] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid object name 'django_migrations'. (208) (SQLExecDirectW)")

这是一个错误出现时,我试图迁移,运行服务器等

我发现,当我直接从Linux(sqlcmd)登录数据库时,我也不能进行“正常”选择,比如

SELECT * FROM django_migrations;

今天我发现我可以这样使用它:

SELECT * FROM db_owner.django_migrations;

这将是我的问题的结束,但我如何告诉Django模型以这种方式使用它或修复db?在测试数据库(其他服务器、相同的SQLServerVersion等)上,一切都运行得很好。当我尝试从没有db\u owner前缀的表中执行select时,出现以下错误:

django.db.utils.ProgrammingError: ('42S02', "[42S02] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid object name 'django_migrations'. (208) (SQLExecDirectW)")

Tags: djangoinpyselfnormhomedbmigrations
1条回答
网友
1楼 · 发布于 2024-09-28 19:08:46

正如Ivan所说,我修改了所有表以使用dbo模式,而不是DBU所有者,一切都开始工作了!是的

ALTER SCHEMA dbo TRANSFER db_owner.tableName;

在我数据库的每一张桌子上。你知道吗

相关问题 更多 >