Rumah > pangkalan data > tutorial mysql > Mengapa PostgreSQL Membuang Ralat 'Lajur Tidak Wujud' Walaupun Lajur Wujud?

Mengapa PostgreSQL Membuang Ralat 'Lajur Tidak Wujud' Walaupun Lajur Wujud?

Mary-Kate Olsen
Lepaskan: 2025-01-20 20:38:10
asal
728 orang telah melayarinya

Why Does PostgreSQL Throw a

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>
Salin selepas log masuk

Melaksanakan pertanyaan ini menghasilkan ralat yang mengecewakan:

<code>org.postgresql.util.PSQLException: ERROR: column "continent" does not exist</code>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan