我们有一个测试环境和一个带有 DB2 数据库和 VB.net 项目的生产环境。我们最近在一个 74 列的表中添加了 4 列,总共有 78 列。我们在测试环境中进行了这种更改已经有一段时间了,但昨天才添加到生产中。在我们的 VB.net 代码(test 和 prod)中,我们使用一条Select * FROM TABLENAME
语句从数据库中获取一行并显示它。一切都在测试环境中完美运行,但是当我们运行代码并指向生产数据库时,结果中不包含四个新添加的列,并且当我们尝试访问该数据时出现错误。
这就是奇怪的地方。如果我们在 select 语句中明确命名新列,它们就会被包含在内,一切都很好。我知道我们应该明确命名列,作为最佳实践,这就是我们要做的,但是,我必须弄清楚发生了什么。
进一步的观察:
- 如果我使用 System i Navigator 将
Select * FROM TABLENAME
查询输入到生产数据库中,则会返回所有列,包括 4 个新列。 - 我们正在使用完全相同的 VB.NET 代码来访问测试数据库和生产数据库......我们运行项目并将连接字符串从 TestingDB 更改为 ProductionDB,因此,我们消除了不同数据对象版本的可能性(我认为) , ETC。
SELECT *
因此,如果我们使用 System i Navigator(使用),这些列就在那里。如果我们在 VB.NET 代码中明确命名它们,这些列就在那里。但是,如果我们Select *
在 VB.NET 代码中使用,则排除了 4 个新列(但仅在生产版本中)。
有没有人见过这样的行为?