8

pymssql を使用してデータベースを作成しようとすると、このエラーが発生します。

cur.execute("CREATE DATABASE %s;" % self.getsql('dbname'), conn)

与える

*** OperationalError: (226, 'CREATE DATABASE statement not allowed within multi-
statement transaction.DB-Lib error message 226, severity 16:\\nGeneral SQL Serve
r error: Check messages from the SQL Server\\n')

これは何を意味するのでしょうか ??

4

1 に答える 1

9

問題は、cur.executeが毎回トランザクションを開始するが、「CREATEDATABASE」操作をトランザクション内で実行できないことでした。

http://social.msdn.microsoft.com/Forums/pl/adodotnetdataproviders/thread/594ff024-8af6-40b3-89e0-53edb3ad7245

>>> connection.autocommit(True)
>>> cursor = connection.cursor()
>>> cursor.execute("CREATE DATABASE Foo")
>>> connection.autocommit(False)

これは機能します。不思議なことに、pymssqlに文書化されていません...うーん

于 2012-03-29T21:58:39.300 に答える