テスト環境と、DB2 データベースと VB.net プロジェクトを使用した実稼働環境があります。最近、74 列のテーブルに 4 列を追加して、合計 78 列になりました。この変更はしばらくの間テスト環境で行われていましたが、昨日本番環境に追加されました。VB.net コード (test および prod) では、Select * FROM TABLENAME
ステートメントを使用してデータベースから単一の行を取得し、それを表示します。テスト環境ではすべてが完全に機能しますが、コードを実行して本番データベースを指すと、新しく追加された 4 つの列が結果に含まれず、そのデータにアクセスしようとするとエラーが発生します。
ここが奇妙になるところです。selectステートメントで新しい列に明示的に名前を付けると、それらが含まれ、すべて問題ありません。ベスト プラクティスとして、列に明示的に名前を付ける必要があることはわかっています。それが私たちがやろうとしていることですが、何が起こっているのかを理解する必要があります。
さらなる観察:
- System i Navigator を使用
Select * FROM TABLENAME
して実稼働データベースにクエリを入力すると、4 つの新しい列を含むすべての列が返されます。 - テストのDBと本番のDBにアクセスするためにまったく同じVB.NETコードを使用しています...プロジェクトを実行し、接続文字列をTestingDBからProductionDBに変更するだけなので、異なるデータオブジェクトバージョンの可能性を排除しました(私は思う)など
そのため、System i ナビゲーター (を使用SELECT *
) を使用すると、列が表示されます。VB.NET コードで明示的に名前を指定すると、列が表示されます。ただし、Select *
VB.NET コードで使用すると、4 つの新しい列が除外されます (ただし、製品版のみ)。
誰かが以前にこのような行動を見たことがありますか?