Rumah >pangkalan data >tutorial mysql >Mengapa Saya Mendapat Ralat 'lajur \'X\' tidak wujud' dalam Penyata INSERT PostgreSQL Saya?

Mengapa Saya Mendapat Ralat 'lajur \'X\' tidak wujud' dalam Penyata INSERT PostgreSQL Saya?

DDD
DDDasal
2025-01-12 07:29:43671semak imbas

Ralat Penyata INSERT PostgreSQL: "lajur "X" tidak wujud"

Apabila memasukkan data ke dalam jadual PostgreSQL, ralat "lajur "X" tidak wujud" selalunya menandakan masalah dengan nilai yang disediakan dalam pernyataan INSERT. Ini biasanya berpunca daripada literal rentetan yang tidak diformatkan dengan betul.

Mesej ralat, seperti yang ditunjukkan dalam masalah asal, berkemungkinan menunjukkan isu dengan lajur last_config_version. Petikan nilai rentetan yang salah ialah punca yang paling biasa.

Masalahnya: Petikan Rentetan Salah

PostgreSQL menggunakan petikan tunggal (') untuk mengehadkan literal rentetan. Menggunakan petikan berganda (") menganggap rentetan sebagai pengecam lajur, membawa kepada ralat "lajur 'X' tidak wujud" jika rentetan itu bukan nama lajur sebenar.

Penyelesaian 1: Petikan Rentetan yang Betul

Cara yang betul untuk memasukkan nilai last_config_version ialah dengan menyertakannya dalam petikan tunggal:

<code class="language-sql">INSERT INTO config_change_log (last_config_version, is_done, change_description)
VALUES ('5837-2016-08-24_09-12-22', false, '{ ''key'':''value''}');</code>

Perhatikan penggunaan petikan tunggal di sekitar nilai last_config_version. Selain itu, dalam change_description rentetan seperti JSON, petikan tunggal dilepaskan dengan menggandakannya ('').

Penyelesaian 2: Mengendalikan Petikan Tunggal dalam Data

Jika data anda memerlukan petikan tunggal, anda mesti mengelakkannya dengan menggandakannya. Contohnya:

<code class="language-sql">INSERT INTO config_change_log (last_config_version, is_done, change_description)
VALUES ('5837-2016-08-24_09-12-22', false, '{ "key":"value"}');</code>

Ini mengandaikan bahawa change_description bertujuan untuk menyimpan data JSON dan anda menggunakan petikan berganda untuk kunci dan nilai dalam rentetan JSON, yang merupakan amalan JSON standard. Jika ia bukan JSON, laraskan dengan sewajarnya menggunakan escape yang sesuai untuk jenis data.

"Why

Dengan memetik literal rentetan dengan betul dan melepaskan petikan tunggal apabila perlu, pernyataan INSERT anda akan berjaya dilaksanakan, mengelakkan ralat "lajur "X" tidak wujud". Sentiasa semak semula sintaks anda, terutamanya di sekitar nilai rentetan, untuk mengelakkan isu PostgreSQL biasa ini.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'lajur \'X\' tidak wujud' dalam Penyata INSERT PostgreSQL Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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