2016-04-11 18 views
0

Böyle bir sorunuz var: $this->db->select("SELECT * FROM foo"); Şimdi tablo adı Foo ise ve bu betiği MySQL istance üzerinde çalışıyorum tüm iyi çalışıyor (MySQL üzerindeki tablo adı küçük harflerle bile olsa): foo. .Oracle tablo isimleri büyük/küçük harf duyarsız nasıl yapılır?

sqlstate [42S02]: Foo olarak tablo adı var Oracle üzerinde ben alırsınız Taban tablo veya bulunamadı görünümünde: 1146: tablo 'test_db.foo'

yok Çünkü Oracle islamı Foo değil foo denir.Bunu düzeltmek için bir fikrim var mı?

+1

http://stackoverflow.com/questions/7425153/reason-why-oracle-is-case-sensitive, tırnak içine almadığınız sürece tablo adlarının büyük/küçük harfe duyarlı olmadığını belirtir. – Barmar

+0

Bu garip, tablo ismini alıntıda gizlemiyorum. – Dillinger

+0

Tabloyu oluştururken teklif kullandınız mı? – Barmar

cevap

2

[TL; DR] Yapılması gereken en basit şey, nesne adlarının etrafında çift tırnak kullanmamak ve yalnızca varsayılan olarak büyük/küçük harf duyarlılığını yönetmek. Oracle veritabanları varsayılan olarak büyük/küçük harfe duyarlıdır; bununla birlikte, varsayılan olarak, her şeyi büyük harfe dönüştürecektir, böylece büyük/küçük harf duyarlılığı sizden, kullanıcıdan soyutlanır.

CREATE TABLE tEsT (column_name NUMBER); 

Ardından:

SELECT * FROM USER_TABLES; 

Çıkışlar:

SELECT COUNT(*) FROM test; 
SELECT COUNT(*) FROM Test; 
SELECT COUNT(*) FROM TEST; 
SELECT COUNT(*) FROM tEsT; 

hepsi aynı çıktıyı ve verecek

TABLE_NAME 
---------- 
TEST 

(tablo adı büyük harflerle Not) .

sonra oracle tablo adına durumunda kullanımınızı saygı duyacağız çift tırnak kullanıyorsanız:

CREATE TABLE "tEsT" (column_name NUMBER); 

ve:

SELECT * FROM USER_TABLES; 

Çıkışlar:

TABLE_NAME 
---------- 
TEST 
tEsT 

(Not: şimdi TEST ve tEsT adında iki tablo var ve oracle se İkincisinin nsivite - tırnak ile oluşturulan.

(Ayrıca not: SELECT * FROM tEsT, büyük-küçük harfe dönüştürülmüş olan ilk tablodan seçecektir, ancak SELECT * FROM "tEsT", sorgulardan aynı olsa bile, sorgulardan aynı olsa bile, ikinci seçilmesi gerekir).

+0

Hayır, hala aynı hata.Tabloyu o zamanlar adına bir alıntı olmadan yarattım. Her neyse, gösteriyi çalıştırdığımda tablo tablosu adı oluşturun Tablo adının etrafında bir backtick fark ettim – Dillinger

İlgili konular