Rumah > pangkalan data > tutorial mysql > Ralat pada menamakan semula 'table_name' kepada 'new_table_name' (errno: 150) - Bagaimana untuk menyelesaikan ralat MySQL: Ralat semasa menamakan semula 'table_name' kepada 'new_table_name', nombor ralat: 150

Ralat pada menamakan semula 'table_name' kepada 'new_table_name' (errno: 150) - Bagaimana untuk menyelesaikan ralat MySQL: Ralat semasa menamakan semula 'table_name' kepada 'new_table_name', nombor ralat: 150

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2023-10-05 08:18:13
asal
948 orang telah melayarinya

Error on rename of 'table_name' to 'new_table_name' (errno: 150) - 如何解决MySQL报错:重命名'table_name'为'new_table_name'时出错,错误编号:150

Cara menyelesaikan ralat MySQL: Ralat berlaku semasa menamakan semula 'table_name' kepada 'new_table_name', nombor ralat: 150, contoh kod khusus diperlukan

Apabila menggunakan pangkalan data MySQL, kita sering menghadapi pelbagai ralat. Salah satu kesilapan biasa ialah apabila menamakan semula jadual data. Pangkalan data MySQL akan mengembalikan nombor ralat 150 apabila melakukan operasi nama semula. Ralat ini biasanya disebabkan oleh kekangan kunci asing.

Kekangan kunci asing adalah mekanisme yang digunakan untuk memastikan perkaitan antara jadual. Apabila kita ingin menamakan semula jadual, jika jadual itu mempunyai perkaitan kunci asing, MySQL akan menghalang kita daripada menamakan semula secara langsung. Sebaliknya, ralat 150 akan dilaporkan. Jadi bagaimana untuk menyelesaikan masalah ini? Beberapa contoh kod khusus diberikan di bawah.

Mula-mula, mari buat dua jadual mudah untuk menunjukkan ralat ini.

CREATE TABLE table1 (
   id INT PRIMARY KEY
);

CREATE TABLE table2 (
   id INT PRIMARY KEY,
   table1_id INT,
   FOREIGN KEY (table1_id) REFERENCES table1(id)
);
Salin selepas log masuk

Dalam kod di atas, kami mencipta dua jadual, jadual1 dan jadual2. Terdapat perkaitan kunci asing antara kedua-dua jadual ini, dan medan table1_id jadual2 merujuk kepada medan id jadual1.

Seterusnya, kami cuba menamakan semula jadual table1:

RENAME TABLE table1 TO new_table1;
Salin selepas log masuk

Apabila kami melaksanakan kod di atas, MySQL mengembalikan ralat 150. Oleh kerana table2 bergantung pada kekangan kunci asing table1, MySQL tidak membenarkan anda menamakan semula table1 secara langsung.

Jadi bagaimana untuk menyelesaikan masalah ini? Terdapat dua cara untuk menyelesaikan ralat ini.

Kaedah 1: Padamkan kekangan kunci asing dahulu, dan kemudian namakannya semula.

ALTER TABLE table2 DROP FOREIGN KEY table2_ibfk_1;
RENAME TABLE table1 TO new_table1;
Salin selepas log masuk

Dalam kod di atas, kami telah mengalih keluar kekangan kunci asing jadual table2 dengan menggunakan pernyataan ALTER TABLE. Kemudian kami meneruskan operasi penamaan semula. Kali ini, MySQL akan berjaya melaksanakan operasi penamaan semula.

Kaedah 2: Gunakan pernyataan ALTER TABLE untuk menukar nama jadual dan kekangan kunci asing pada masa yang sama.

ALTER TABLE table1 RENAME new_table1;
ALTER TABLE table2 DROP FOREIGN KEY table2_ibfk_1;
ALTER TABLE new_table1 ADD CONSTRAINT table2_fk FOREIGN KEY (id) REFERENCES table2(table1_id);
Salin selepas log masuk

Dalam kod di atas, kami mula-mula menggunakan pernyataan ALTER TABLE untuk menamakan semula jadual table1 kepada new_table1. Kemudian, kami mengalih keluar kekangan kunci asing jadual table2. Akhir sekali, kami menambahkan semula kekangan kunci asing menggunakan pernyataan ALTER TABLE untuk memastikan perkaitan kunci asing masih wujud.

Melalui dua kaedah di atas, kami berjaya menyelesaikan masalah ralat MySQL 150. Tetapi perlu diingat bahawa sebelum menamakan semula jadual, anda mesti memastikan bahawa tiada jadual lain bergantung pada kekangan kunci asing jadual. Jika tidak, kita perlu memadamkan kekangan kunci asing yang berkaitan terlebih dahulu dan kemudian melaksanakan operasi penamaan semula.

Ringkasnya, ralat tidak dapat dielakkan apabila menggunakan pangkalan data MySQL. Apabila menghadapi masalah yang serupa dengan ralat nombor 150, kita boleh menyelesaikan masalah tersebut melalui penyelesaian di atas. Saya harap contoh kod khusus di atas dapat membantu anda menyelesaikan ralat yang berlaku apabila MySQL menamakan semula jadual.

Atas ialah kandungan terperinci Ralat pada menamakan semula 'table_name' kepada 'new_table_name' (errno: 150) - Bagaimana untuk menyelesaikan ralat MySQL: Ralat semasa menamakan semula 'table_name' kepada 'new_table_name', nombor ralat: 150. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan