0

SQLサーバーのDBを正常に照会できます。ビューをクエリしようとすると、問題が発生します。

私はクレイジーなことをしようとはしていません:

 $sql = 'select * from location_v';
 $stj = $db_destination->prepare($sql);

それは準備ラインで死に続けます。これが私が戻ってきたものです(これはそれほど有用ではありません):

DBD::ODBC::db prepare failed: (DBD: st_prepare/SQLPrepare err=-1)

ビューはテーブルとまったく同じように処理されるべきではありませんか?前もって感謝します。

4

3 に答える 3

3

dboを使ってみましたか。ビュー名のプレフィックス(SELECT * FROM dbo.location_v)?ビューが実際にdboにあることを確認しましたか。スキーマ?ビューおよび/またはビューが選択しているベーステーブルの権限を確認しましたか?残念ながら、ODBCはここで非常に意味のあるエラーメッセージを表示しないため、さまざまな可能性がありますが、オブジェクトが見つからない(プレフィックスが原因であるか、データベースが間違っているため)か、アクセス許可である可能性があります。

于 2009-11-26T21:11:53.080 に答える
1

はい、ビューはそのクエリのテーブルと見分けがつかないはずです。

(一般的なデータベースだけでなく)実際にビューをクエリできますか?

エラーコード-1は、問題として特定のものを強く示すものではありません。「許可なし」の場合もありますが、ほとんど何でもかまいません。

環境に設定されたDBI_TRACE=9(またはそれよりも小さい数)を使用して(またはを使用して$dbh->trace(9))、問題がどこにあるかを確認することをお勧めします。これにより、何が起こっているかについて多くの情報(すべてが理解できるわけではありません)が得られるはずです。それは問題が実際にどこにあるかをあなたに示すかもしれません。

于 2009-11-26T21:12:31.727 に答える
0

Arg。問題を見つけました。ビューをクエリする前にいくつかのクエリがあり、新しいハンドルを開く前にハンドルを閉じていませんでした。クエリを実行する前に、これを行う必要がありました。

undef $stj;

うまくいけば、これは他の誰かを助けるでしょう。

于 2009-11-27T14:07:54.170 に答える