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

  • Majestic Casual

    Majestic Cas

    28 NİSAN 2012
  • SignatureSeries

    SignatureSer

    24 Aralık 2006
  • Study with Substance P

    Study with S

    31 Mayıs 2008