MyModel.objectsを参照すると、Django FWKを使用して既存のSQL-SERVERデータベースを読み込み、データベースに正常に接続してください。すべて() Djangoは引用符で囲まれたテーブル名とクエリを起動しますが、SQL-Serverは、プレフィックススキーマを必要とするので、それは失敗し、エラーを取得:テーブルをsql-serverとしてモデリングする方法[schema_name]。[table_name]
('42S02', "[42S02] [Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid object name 'table_name'. (208) (SQLExecDirectW)")
EDIT:これは唯一の非「デフォルト」で発生しますdjangoデータベース設定。私のデフォルトデータベースは特別な扱いを必要とせず、デフォルトスキーマのないdbユーザーを持つSQLサーバーデータベースです。
モデルや設定をどのように設定できますか.DATABASEまたはdbrouterを使用すると、djangoが特定のスキーマに接続し、schema_nameを使用する必要はありませんか?
オプション1:モデルのMetaクラスのプロパティ:DB_Tableの= 'schema_name.table_name' が動作しない、構築するクエリは、[SCHEMA_NAME]であるFROM句[schema_name.table_name]として、どのようなSQLのニーズがあるため、 。[TABLE_NAME]
オプション2:settings.DATABASE 'NAME' は既にSCHEMA_NAMEを指し、それは十分ではありません
オプション3:特定のスキーマに接続するためにはDjango伝えるためにどのように全く分かりませんまたはプレフィックススキーマ名をすべての作成するクエリ。
オプション4:make djangoは、大括弧でdb_tableを囲まないでください。 db_tableを 'schema.table'と定義すると、結果のクエリは[schema.table]で囲みます。 "[]"がなければ大括弧のクエリが機能します。
オブジェクトに接頭辞を付けるスキーマが1つだけ必要な場合は、ユーザーのデフォルトスキーマとしてisを設定できます。つまり、スキーマを持たないMyTableを参照するとエラーは発生しません.SQL Serverはまずユーザーのデフォルトスキーマでそれを探してからdboを試行し、オブジェクトがデフォルトで見つからない場合にのみ失敗しますスキーマまたはdbo – sepupic
関連する質問:[SQLクエリのデフォルトスキーマを設定](https://stackoverflow.com/q/4942023/2144390) –
ユーザーのデフォルトスキーマを変更する特権はありませんが、唯一の方法は、おそらく私はそれを上位のエシェロンに申請することができます... – toscanelli