Sadece PostgreSQL tablo adı ("ilişkisi var" gelmez;)kullanın | Netgez.com
SORU
29 Mart 2009, Pazar


Sadece PostgreSQL tablo adı ("ilişkisi var" gelmez;)kullanın

Basit bir veritabanı sorgusu yapmak için aşağıdaki PHP komut dosyası çalıştırmak için çalışıyorum:

$db_host = "localhost";
$db_name = "showfinder";
$username = "user";
$password = "password";
$dbconn = pg_connect("host=$db_host dbname=$db_name user=$username password=$password")
    or die('Could not connect: ' . pg_last_error());

$query = 'SELECT * FROM sf_bands LIMIT 10';
$result = pg_query($query) or die('Query failed: ' . pg_last_error());

Bu, aşağıdaki hata üretir:

Sorgu başarısız oldu: HATA: ilişki "sf_bands" yok

Birisi bir hata ilişkisi yok belirten alır nerede bulabilirim tüm örneklerde, kendi tablo büyük harfleri adını kullandıkları için. Masa adımı büyük harfler yok. Bir şekilde veritabanı adı, örneğin showfinder.sf_bands dahil olmadan benim tablo sorgu var mı?

CEVAP
29 Mart 2009, Pazar


Okuduğum kadarıyla, bu hata tablo adını doğru başvuru değilsin demektir. Bir ortak nedeni tablo karışık durumda bir yazım ile tanımlanan ve lower-case ile sorgu için çalışıyoruz.

Diğer bir deyişle, aşağıdaki başarısız:

CREATE TABLE "SF_Bands" ( ... );

SELECT * FROM sf_bands;  -- ERROR!

Çift tırnak tablo tanımlı olarak karışık durumda belirli yazım kullanabilirsiniz tanımlayıcıları sınırlandırmak için kullanın.

SELECT * FROM "SF_Bands";

< / ^ hr .

Ynt yorum, ekleyebileceğiniz bir şema için "search_path" Peki o zaman sana bir referans tablo ismi olmadan eleme şema, sorgular eşleşen tablo adını kontrol her şema için. Tıpkı kabuk PATH PHP, vb include_path. Geçerli şema arama yolu kontrol edebilirsiniz:

SHOW search_path
  "$user",public

Åžema arama yolu deÄŸiÅŸtirebilirsiniz:

SET search_path TO showfinder,public;

Ayrıca Bkz: 13**

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • krotoflik

    krotoflik

    26 ÅžUBAT 2011
  • tseyina

    tseyina

    2 AÄžUSTOS 2006