2

データベースには、互いに構築された多数のテーブルといくつかのビューがあります。ビューを次のようにクエリしようとすると:

select [db].[view].* from [db].[view];

次のエラーが表示されますERROR 1051 (42S02): Unknown table '[view]'

[db]および[view]は、実際のデータベース名とビュー名のプレースホルダーです。

その[db]部分を省略すると、すべてが正常に機能します。また、一部のビューでは[db]先頭に追加して機能しますが、他のビューでは機能しません。

なぜこれが起こるのか、またはそれを回避する方法について誰かが考えを持っていますか?

クエリは私が使用する抽象化レイヤーによって生成されるため、クエリを直接制御することはできません。

編集:すべてのフィールド名を書き出すと、*セレクターと関係があることがわかりました。これは発生しないためです。私にはバグのように見えます。

4

1 に答える 1

0

MySQLバックティック区切り文字を使用して、TSQL が使用するブラケットではなく、予約済みのキーワードをエスケープします。

SELECT `db`.`view`.* FROM `db`.`view`;

識別子に括弧が付いている場合

SELECT `[db]`.`[view]`.* FROM `[db]`.`[view]`
于 2013-02-06T17:39:25.633 に答える