Ralat "lajur tidak wujud" PostgreSQL: Isu Sensitiviti Kes
Sakit kepala PostgreSQL yang biasa ialah ralat "lajur tidak wujud", walaupun apabila lajur ditakrifkan dengan jelas. Ini selalunya berpunca daripada isu sensitiviti kes. Pertimbangkan contoh ini:
<code class="language-sql">SELECT Continent FROM network.countries WHERE Continent IS NOT NULL AND Continent <> '' LIMIT 5</code>
Pertanyaan yang kelihatan betul ini mungkin kembali:
<code>ERROR: column "continent" does not exist Hint: Perhaps you meant to reference the column "countries.Continent". Position: 8</code>
Penyelesaian: Penamaan Lajur Tepat dengan Petikan Berganda
Pembetulannya mudah: sertakan nama lajur dalam petikan berganda:
<code class="language-sql">SELECT "Continent" FROM network.countries WHERE "Continent" IS NOT NULL AND "Continent" <> '' LIMIT 5</code>
Dengan memetik dua kali "Continent"
, anda secara jelas memberitahu PostgreSQL untuk menganggap nama itu sebagai rentetan literal sensitif huruf besar-besaran, mengelakkan salah tafsir.
Mengapa Petikan Dua Kali Penting
PostgreSQL biasanya mengendalikan nama lajur dalam cara yang tidak peka huruf besar-besaran. Walau bagaimanapun, nama lajur yang tidak dipetik sering ditukar kepada huruf kecil secara dalaman. Jika nama lajur anda mempunyai huruf besar bercampur (seperti "Benua") dan anda merujuknya tanpa petikan, PostgreSQL mungkin mencari lajur "benua" huruf kecil, yang membawa kepada ralat. Petikan berganda memastikan padanan yang tepat, menyelesaikan kekaburan.
Atas ialah kandungan terperinci Mengapa Pertanyaan PostgreSQL Saya Membuang Ralat 'Lajur Tidak Wujud' Walaupun Lajur Wujud?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!