2012-03-29 16 views
5

Próbuję utworzyć bazę danych za pomocą pymssql i otrzymuję ten błąd.Jak mogę utworzyć bazę danych przy użyciu pymssql

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

daje

*** 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') 

Co to znaczy ??

+0

Wypróbuj 'cur.execute (" utwórz bazę danych% s "% (self.getsql ('dbname'),), conn)', spróbuj także bez 'getsql' połączenie. –

+1

Jeśli używasz innych instrukcji przed 'CREATE DATABASE', możesz potrzebować' commit() 'bieżącej transakcji przed jej uruchomieniem. – Amber

Odpowiedz

5

Zagadnienie to było cur.execute rozpoczyna transakcję za każdym razem, ale 'CREATE DATABASE' operacja nie może być excuted ramach transakcji

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) 

to do dzieła. Dziwnie jego nie udokumentowano w pymssql ... hmmm