Frage

Ich kann die SQL Server DB Fein abfragen. Das Problem tritt auf, wenn ich versuche und eine Ansicht abfragen.

Ich versuche nicht, etwas verrückt zu tun:

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

Es hält auf der Vorbereitung Linie zu sterben. Hier ist, was ich bin immer wieder (was nicht alles, was nützlich ist):

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

Sollte nicht Ansichten genau gehandhabt werden das gleiche wie ein Tisch? Vielen Dank im Voraus.

War es hilfreich?

Lösung

Haben Sie die dbo versuchen Sie es mit. Präfix auf den Namen der Ansicht (SELECT FROM dbo.location_v *)? Haben Sie prüfen, ob die Ansicht tatsächlich im dbo ist. Schema? Haben überprüfen Sie Berechtigungen für die Ansicht und / oder die Basistabelle (n) die Ansicht von auswählt? Leider ODBC keine sehr aussagekräftige Fehlermeldung hier geben, so dass es eine beliebige Anzahl von Dingen sein könnte, aber es ist sehr wahrscheinlich entweder Objekt nicht gefunden (wegen des Präfixes, oder Sie sind in der falschen Datenbank) oder Berechtigungen.

Andere Tipps

Ja, Ansichten sollten von Tabellen für diese Abfrage nicht zu unterscheiden sein.

Können Sie tatsächlich die Ansicht Abfrage (und nicht nur die Datenbank im Allgemeinen)?

Ein Fehlercode von -1 ist nicht stark bezeichnend für etwas Bestimmtes als Problem. Es kann manchmal sein ‚keine Erlaubnis‘, aber es könnte fast alles sein.

Ich schlage vor, suchen, um zu sehen, wo das Problem durch die Verwendung DBI_TRACE = 9 (oder vielleicht auch kleinere Zahlen), die in der Umgebung (oder verwenden Sie $dbh->trace(9)) ist. Dies sollte Ihnen viele Informationen (nicht alle davon verständlich) über das, was vor sich geht; es kann Ihnen zeigen, wo das Problem tatsächlich ist.

Arg. Ich fand das Problem. Ich hatte ein paar Anfragen, bevor ich die Ansicht abfragen und ich schloss nicht mein Griff, bevor eine neue Öffnung. Alles, was ich tun musste, war, bevor ich die Abfrage lautete:

undef $stj;

Hoffentlich hilft dies jemand anderes.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top