Python 在删除另一个数据库后,pyodbc找不到现有数据库的db id
另一个用户正在使用她在python会话中创建的数据库,我们称之为user_db。一、 在SSMS中,删除一个不同的数据库,让我们称之为其他数据库。在我删除其他_db之后,她的脚本声称他们无法找到用户_db的db id。如果她删除用户_db并重新创建它,则问题仍然存在。如果她使用了一个新的名字,比如new_user_db,她的脚本会再次工作 在我看来,unixodbc/freetdbs/pyodbc/python端似乎有东西在缓存数据库id。有人能告诉我哪些工具可能导致问题,以及可能的解决方案吗 错误: pyodbc.ProgrammingError:('42000',“[42000][FreeTDS][SQL Server]找不到数据库ID(ID\U编号) 编辑: 软件版本 pyodbc--4.0.16 centos--6.6 unixODBC--2.2.14 freeTDS——0.91 可重复通过: 用户1(在Python中): 用户2(在SSMS中): 用户1(在Python中):Python 在删除另一个数据库后,pyodbc找不到现有数据库的db id,python,sql-server,pyodbc,freetds,unixodbc,Python,Sql Server,Pyodbc,Freetds,Unixodbc,另一个用户正在使用她在python会话中创建的数据库,我们称之为user_db。一、 在SSMS中,删除一个不同的数据库,让我们称之为其他数据库。在我删除其他_db之后,她的脚本声称他们无法找到用户_db的db id。如果她删除用户_db并重新创建它,则问题仍然存在。如果她使用了一个新的名字,比如new_user_db,她的脚本会再次工作 在我看来,unixodbc/freetdbs/pyodbc/python端似乎有东西在缓存数据库id。有人能告诉我哪些工具可能导致问题,以及可能的解决方案吗
编辑更正的SQL语法我遇到的问题与数据库最近被另一个连接删除后查询信息模式有关。每次查询数据库的信息模式时运行“DBCC FREEPROCCACHE”似乎可以解决此问题。我无法用unixODB在Ubuntu 16.04上重现您的问题C 2.3.1、FreeTDS 0.91和pyodbc 4.0.17。请用您正在使用的版本和演示问题的a来回答您的问题。在将所有出现的
test\u 1.test\u table
替换为test\u 1..test\u table
之后,再次尝试重新编写代码。看起来您混淆了目录(也称为数据库)在中使用架构引用的引用。这将引发一个语法错误,该错误不是我正在接收的错误。否,database\u name..object\u name
是有效的syntax.FWIW,仍然无法使用更新的代码重现问题(使用test\u 1.dbo.test\u table
)在Xubuntu 16.04 x64上使用unixODBC 2.3.1、FreeTDS 1.0.48和pyodbc 4.0.17。
conn = pyodbc.connect(cxnstring)
cursor = conn.cursor()
cursor.execute('CREATE DATABASE test')
cursor.execute('CREATE DATABASE test_1')
cursor.execute('CREATE TABLE test_1.dbo.test_table (column_1 INT)')
cursor.execute('SELECT * FROM test_1.dbo.test_table')
DROP DATABASE test_1
conn = pyodbc.connect(cxnstring)
cursor = conn.cursor()
cursor.execute('CREATE DATABASE test_1')
cursor.execute('CREATE TABLE test_1.dbo.test_table (column_1 INT)')
cursor.execute('SELECT * FROM test_1.dbo.test_table')