2016-11-20 31 views
3

私のコードを持っていない:pyodbcエラースキーマが存在しないか、権限

con = pyodbc.connect("DRIVER={SQL Server};SERVER=WIN-RCNSTVE00SV\SQLEXPRESS;UID=sa;PWD=password;database=master",autocommit=True) 
cursor = con.cursor() 

cursor.execute("create database test_db") 
cursor.execute("create table test_db.tb(id INT NOT NULL IDENTITY(1,1) PRIMARY KEY, random_txt VARCHAR(50), sequence TEXT, status BIT)") 

データベースを作成した後、私はそれでテーブルを作成することはできませんよ。

pyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]The specified schema name "test_db" either does not exist or you do not have permission to use it. (2760) 

私は、データベースの作成後に許可のクエリを実行しようとしましたが、同じエラーが発生しました。私はまた、データベースを指定する新しいcon(接続)を作成しようとしましたが、動作しませんでした。助けてください。

答えて

2

schemaの名前がありません。それは、完全修飾オブジェクト名が作成した他のスキーマを持っていて、そのスキーマに新しいテーブルを作成したい場合は、その後でschema nameを置き換えるこの形式

DatabaseName.SchemaName.ObjectName

になります

create table test_db.dbo.tb 
(     --^^^ Missing schema name 
id INT NOT NULL IDENTITY(1,1) PRIMARY KEY, 
random_txt VARCHAR(50), 
sequence TEXT, 
status BIT 
) 

する必要がありますdbo。デフォルトでは、オブジェクトはdboスキーマに作成されます。あなたはdboスキーマにテーブルを作成したい場合、あなたはこのように書くだけでなく

Create table test_db..tb() 

..暗黙的dboスキーマに

+0

感謝をポイントすることができます!私はスキーマについて全く知らなかった。 –

関連する問題