Saya punya tabel yang kunci utamanya digunakan di beberapa tabel lain dan memiliki beberapa kunci asing ke tabel lain.
CREATE TABLE location (
locationID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
...
) ENGINE = InnoDB;
CREATE TABLE assignment (
assignmentID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
locationID INT NOT NULL,
FOREIGN KEY locationIDX (locationID) REFERENCES location (locationID)
...
) ENGINE = InnoDB;
CREATE TABLE assignmentStuff (
...
assignmentID INT NOT NULL,
FOREIGN KEY assignmentIDX (assignmentID) REFERENCES assignment (assignmentID)
) ENGINE = InnoDB;
Masalahnya adalah ketika saya mencoba untuk menjatuhkan salah satu kolom kunci asing (yaitu locationIDX) itu memberi saya kesalahan.
"ERROR 1025 (HY000): Kesalahan saat mengganti nama"
Bagaimana saya bisa menjatuhkan kolom di tabel tugas di atas tanpa mendapatkan kesalahan ini?
SHOW CREATE TABLE footable;
untuk melihat apa nama batasannya. Itu bukan nama kolom itu sendiri. Terima kasih atas jawabannya!Kunci asing ada untuk memastikan integritas data, jadi Anda tidak bisa menjatuhkan kolom selama itu bagian dari kunci asing. Anda harus menjatuhkan kunci terlebih dahulu.
Saya akan berpikir pertanyaan berikut akan melakukannya:
sumber
Seperti semua orang katakan di atas, Anda dapat dengan mudah menghapus FK. Namun, saya hanya memperhatikan bahwa mungkin perlu untuk menjatuhkan KUNCI itu sendiri di beberapa titik. Jika Anda memiliki pesan kesalahan untuk membuat indeks lain seperti yang terakhir, maksud saya dengan nama yang sama, akan berguna untuk menghapus semua yang terkait dengan indeks itu.
sumber
Periksa apa nama CONSTRAINT dan nama KUNCI ASING:
Hapus nama CONSTRAINT dan nama KUNCI ASING:
Semoga ini membantu!
sumber
Inilah cara untuk menghilangkan batasan kunci asing, itu akan berhasil. ALTER TABEL
location
.location_id
KUNCI KUNINGAN ASINGlocation_ibfk_1
;sumber
Hai saya mengikuti beberapa urutan di atas, dan menemukan beberapa solusi.
Anda akan mendapatkan Nama Pembatas FK seperti
Sekarang Anda harus menghapus batasan ini. dengan mengubah tabel commantd
Lalu jatuhkan kolom tabel,
sumber
Anda biasanya mendapatkan kesalahan ini jika tabel Anda menggunakan mesin InnoDB. Dalam hal ini Anda harus menjatuhkan kunci asing, dan kemudian lakukan tabel perubahan dan jatuhkan kolom.
Tetapi bagian yang sulit adalah Anda tidak dapat menjatuhkan kunci asing menggunakan nama kolom, tetapi Anda harus menemukan nama yang digunakan untuk mengindeksnya. Untuk menemukan itu, berikan pilihan berikut:
MENUNJUKKAN wilayah TABEL; Ini akan menunjukkan kepada Anda satu baris, di sudut kiri atas klik opsi +, klik tombol teks lengkap raio lalu klik go. Di sana Anda akan mendapatkan nama indeks, seperti ini:
CONSTRAINT region_ibfk_1 KUNCI ASING (country_id) REFERENSI negara (id) PADA HAPUS TANPA TINDAKAN PADA PEMBARUAN TANPA TINDAKAN Sekarang cukup keluarkan:
ubah region table drop foreign key region_ibfk_1;
atau
lebih sederhana cukup ketik: - ubah table TableName drop kunci asing TableName_ibfk_1 ;
ingat satu-satunya adalah menambahkan _ibfk_1 setelah tablename Anda menjadi seperti ini: - TableName _ibfk_1
sumber
Anda tidak dapat menjatuhkan kolom kunci asing karena direferensikan dari tabel
assignmentStuff
. Jadi, Anda harus terlebih dahulu menjatuhkan batasan kunci asingassignmentStuff.assignmentIDX
.Pertanyaan serupa sudah diajukan di sini . Periksa juga di sini untuk info lebih lanjut.
sumber
Coba ini:
sumber
Langkah 1:
show create table vendor_locations;
Langkah 2:
ALTER TABLE vendor_locations drop foreign key vendor_locations_ibfk_1;
itu berhasil untuk saya.
sumber
kebutuhan pertama untuk mendapatkan nama batasan aktual oleh kueri ini
Kueri ini akan menghasilkan batasan nama kunci asing, sekarang kueri di bawah ini akan menjatuhkannya.
angka terakhir dalam nama batasan di atas tergantung pada berapa banyak kunci asing yang Anda miliki dalam tabel
sumber