Rumah >pangkalan data >tutorial mysql >Mengapa Saya Mendapat Ralat 'lajur \'X\' tidak wujud' dalam Penyata INSERT PostgreSQL Saya?
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.
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!