Saya mencoba ini di mysql:
mysql> alter table region drop column country_id;
Dan mendapatkan ini:
ERROR 1025 (HY000): Error on rename of './product/#sql-14ae_81' to
'./product/region' (errno: 150)
Ada ide? Benda kunci asing?
mysql
mysql-error-1025
Trenton
sumber
sumber
Jawaban:
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:
Ini akan menunjukkan kepada Anda nama indeks, kira-kira seperti ini:
Sekarang cukup keluarkan:
Dan akhirnya sebuah:
Dan kamu baik untuk pergi!
sumber
Ini memang kesalahan kunci asing, Anda bisa mengetahuinya menggunakan perror:
Untuk mengetahui detail lebih lanjut tentang apa yang gagal, Anda dapat menggunakan
SHOW ENGINE INNODB STATUS
dan mencari bagian KESALAHAN ASING TERBARU yang berisi rincian tentang apa yang salah.Dalam kasus Anda, kemungkinan besar ada sesuatu yang merujuk pada kolom country_id.
sumber
Anda juga bisa mendapatkan kesalahan ini dengan mencoba menjatuhkan kunci asing yang tidak ada. Jadi ketika menjatuhkan kunci asing, selalu pastikan itu benar-benar ada.
Jika kunci asing memang ada, dan Anda masih mendapatkan kesalahan ini coba yang berikut ini:
// Jatuhkan kunci asing di sini!
Ini selalu melakukan trik untuk saya :)
sumber
Cukup jalankan kueri alter tabel menggunakan 'KEY' dan bukan 'FOREIGN KEY' di pernyataan drop. Saya harap ini akan membantu menyelesaikan masalah ini, dan akan menghilangkan batasan kunci asing dan Anda dapat mengubah kolom tabel dan menjatuhkan tabel.
di sini
DROP KEY
alih-alihDROP FOREIGN KEY
,Semoga ini bisa membantu.
Terima kasih
sumber
Saya tahu, ini adalah posting lama, tetapi ini adalah hit pertama di mesin pencari favorit semua orang jika Anda mencari kesalahan 1025.
Namun, ada "hack" yang mudah untuk memperbaiki masalah ini:
Sebelum Anda menjalankan perintah, Anda harus terlebih dahulu menonaktifkan pemeriksaan batasan kunci asing menggunakan perintah ini:
Kemudian Anda dapat menjalankan perintah Anda.
Setelah Anda selesai, jangan lupa untuk mengaktifkan kembali batasan kunci asing, menggunakan perintah ini:
Semoga sukses dengan usaha Anda.
sumber
Saya punya masalah serupa sekali. Saya menghapus kunci utama dari TABEL A tetapi ketika saya mencoba untuk menghapus kolom kunci asing dari tabel BI ditunjukkan kesalahan yang sama di atas.
Anda tidak dapat menjatuhkan kunci asing menggunakan nama kolom dan untuk memotong ini di PHPMyAdmin atau dengan MySQL, pertama-tama hapus batasan kunci asing sebelum mengganti nama atau menghapus atribut.
sumber
Lihatlah file kesalahan untuk database mysql Anda. Menurut Bug # 26305 sql saya tidak memberi Anda penyebabnya. Bug ini ada sejak MySQL 4.1 ;-)
sumber
Jika Anda menggunakan klien seperti MySQL Workbench, klik kanan tabel yang diinginkan dari mana kunci asing akan dihapus, lalu pilih tab kunci asing dan hapus indeks.
Kemudian Anda dapat menjalankan kueri seperti ini:
sumber
Mungkin ada tabel lain dengan kunci asing yang merujuk kunci utama yang Anda coba ubah.
Untuk mengetahui tabel mana yang menyebabkan kesalahan, Anda dapat menjalankan
SHOW ENGINE INNODB
STATUS
dan kemudian melihatLATEST FOREIGN KEY ERROR
bagianGunakan kategori SHOW CREATE TABLE untuk menampilkan nama kendala.
Kemungkinan besar itu adalah categories_ibfk_1
Gunakan nama untuk menjatuhkan kunci asing terlebih dahulu dan kolom kemudian:
sumber
Perbuatan
sebelum Operasi juga bisa melakukan trik.
sumber
Saya kira masalah batasan kunci asing. Apakah country_id digunakan sebagai kunci asing di tabel lain?
Saya bukan guru DB tapi saya pikir saya memecahkan masalah seperti ini (di mana ada kendala fk) dengan menghapus fk, melakukan hal-hal tabel perubahan saya dan kemudian mengulang hal-hal fk.
Saya akan tertarik untuk mendengar apa hasilnya - kadang mysql cukup samar.
sumber
Dalam kasus saya, saya menggunakan meja kerja MySQL dan saya menghadapi masalah yang sama saat menjatuhkan salah satu kolom saya dalam sebuah tabel. Saya tidak dapat menemukan nama kunci asing. Saya mengikuti langkah-langkah berikut untuk menyelesaikan masalah:
Rt. klik skema Anda dan pilih 'inspektur skema'. Ini memberi Anda berbagai tabel, kolom, indeks, dll.
Buka tab bernama 'Indeks' dan cari nama kolom di bawah kolom bernama 'Kolom'. Setelah ditemukan periksa nama tabel untuk catatan ini di bawah nama kolom 'Tabel'. Jika cocok dengan nama tabel yang Anda inginkan, maka catat nama kunci asing dari kolom bernama 'Nama'.
Sekarang jalankan query: ALTER table tableNamexx DROP KEY foreignKeyName;
Sekarang Anda dapat menjalankan pernyataan drop yang akan berhasil dijalankan.
sumber
Saya mendapat kesalahan ini dengan MySQL 5.6 tetapi tidak ada hubungannya dengan kunci Asing. Ini pada mesin Windows 7 Professional yang bertindak sebagai server pada LAN kecil.
Aplikasi klien sedang melakukan operasi batch yang membuat tabel mengisinya dengan beberapa data eksternal kemudian menjalankan kueri bergabung dengan tabel permanen kemudian menjatuhkan tabel "sementara". Batch ini melakukan ini sekitar 300 kali dan rutin khusus ini telah berjalan selama seminggu selama beberapa tahun ketika tiba-tiba kita mendapatkan Galat 1025 Tidak dapat mengubah nama masalah pada titik acak dalam bets.
Dalam kasus saya, aplikasi menggunakan 4 pernyataan DDL, CREATE TABLE diikuti oleh 3 CREATE INDEX, tidak ada kunci asing. Namun hanya 2 indeks yang benar-benar dibuat dan file tabel .frm yang sebenarnya diganti nama, pada titik kegagalan.
Solusi saya adalah menyingkirkan pernyataan CREATE INDEX yang terpisah dan membuatnya menggunakan pernyataan CREATE TABLE. Ini pada saat penulisan ini telah memecahkan masalah bagi saya dan bantuan saya orang lain menggaruk-garuk kepala ketika mereka menemukan utas ini.
sumber
averageRatings = FOREACH groupedRatings GENERATE group AS movieID, AVG (ratings.rating) AS avgRating, COUNT (ratings.rating) AS numRatings;
Jika Anda menggunakan perintah seperti di atas, Anda harus menggunakan grup dalam huruf kecil. Ini dapat memecahkan masalah Anda, itu memecahkan masalah saya. Setidaknya dalam skrip PIG.
sumber