如何修复使用连接到数据库时“断言失败:(Status==14L)|(Status==8L)”ADODB连接?

2024-05-28 23:07:58 发布

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

尝试使用Python连接到数据库时,遇到以下错误:

Assertion failed: (Status == 14L) || (Status == 8L), file ../src/uuidsup.cxx, line 171

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

这个问题只发生在我的开发计算机上。当我在不同的PC上使用相同的用户帐户尝试相同的Python代码时,连接工作正常。你知道吗

我确认我可以用同一个连接字符串从我的开发计算机连接到数据库,使用两种不同的方法来响应Quick ways to test OLE DB Connection String(来自Chuck Heatherly和Daniel的响应),所以我有理由相信这不是权限问题。你知道吗

这是失败的原始Python代码:

import adodbapi as db
connectionString = 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=<my database>;Data Source=<server name>'
conn = db.connect(connectionString)

为了确认adodbapi包没有问题,我还尝试了:

from win32com.client import Dispatch
oConn = Dispatch('ADODB.Connection')
oConn.ConnectionString = 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=<my database>;Data Source=<server name>'
oConn.Open()

第一个示例在数据库连接()行。第二个示例失败,在奥康。打开()行。你知道吗

我不知道如何确定这个问题的根源或如何解决它。任何帮助或见解都将不胜感激。你知道吗

更新 我创建了一个简单的C#程序,它执行与上面列出的Python代码完全相同的操作,同样的错误也会发生。从Visual Studio 2017中使用.NET Framework 4.8的默认控制台应用程序开始,我添加了ADODB作为引用(“Microsoft ActiveX Data Objects 6.1 Library”),并将以下代码添加到Main()函数中:

ADODB.Connection oConn;
oConn = new ADODB.Connection();
oConn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=<my database>;Data Source=<server name>";
try
  oConn.Open();
catch (Exception e)
  Console.WriteLine("Error!");

我设置了一个断点奥康。打开(). 在断点之前一切正常,但是当我跨过这一行时,程序崩溃了。在控制台窗口关闭之前的一小会儿,我可以看到在尝试从Python打开数据库时显示的相同错误消息。你知道吗

发生此错误时,catch块不会捕获任何异常。相反,控制台窗口只是关闭,VisualStudio中的“输出”窗口列出“程序…”。。。已退出,代码为3(0x3)。'

看起来这个问题可能和ADODB.连接ActiveX对象本身,但我不知道问题是什么,也不知道如何解决它。你知道吗


Tags: 代码info数据库falsedata错误connectionprovider

热门问题