Rumah >pangkalan data >tutorial mysql >Mengapa PostgreSQL Membuang Ralat 'Lajur Tidak Wujud' Walaupun Lajur Wujud?
Ralat "Lajur Tidak Wujud" PostgreSQL: Kajian Kes
Pembangun Java kerap menghadapi ralat "lajur tidak wujud" yang membingungkan dalam PostgreSQL, walaupun dengan lajur ditakrifkan dengan jelas dalam pangkalan data. Ini sering berlaku apabila membina pertanyaan dinamik yang mengambil nama lajur terus daripada pangkalan data.
Mari kita periksa situasi biasa: Seorang pengguna cuba mendapatkan semula nilai bukan nol dan tidak kosong daripada lajur "Benua" dalam jadual "negara" yang berada dalam skema "rangkaian". Pertanyaan awal ialah:
<code class="language-sql">SELECT Continent FROM network.countries WHERE Continent IS NOT NULL AND Continent <> '' LIMIT 5</code>
Melaksanakan pertanyaan ini menghasilkan ralat yang mengecewakan:
<code>org.postgresql.util.PSQLException: ERROR: column "continent" does not exist</code>
Cadangan PostgreSQL untuk menggunakan "countries.Continent" adalah mengelirukan, kerana kehadiran lajur dalam pgAdmin 4 tidak dapat dinafikan.
Penyelesaian: Kepentingan Petikan Berganda
Masalahnya berpunca daripada kekurangan petikan berganda di sekitar nama lajur. Dalam pertanyaan dinamik, menggunakan petikan berganda di sekitar nama lajur adalah penting untuk mengelakkan konflik penamaan. Ini memaksa PostgreSQL untuk menganggap nama sebagai rentetan literal, mengelakkan kemungkinan salah tafsir.
Pertanyaan yang diperbetulkan, yang menggabungkan petikan berganda, ialah:
<code class="language-sql">SELECT "Continent" FROM network.countries WHERE "Continent" IS NOT NULL AND "Continent" <> '' LIMIT 5</code>
Pertanyaan yang disemak ini dilaksanakan dengan betul, mengembalikan hasil yang dijangkakan—nilai "Benua" bukan nol dan tidak kosong. Ingatlah untuk mengutip dua kali nama lajur secara konsisten dalam SQL dinamik untuk mengelakkan perangkap biasa ini.
Atas ialah kandungan terperinci Mengapa PostgreSQL Membuang Ralat 'Lajur Tidak Wujud' Walaupun Lajur Wujud?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!