Saya mencoba memperbarui kolom visited
untuk memberikan nilai 1. Saya menggunakan workbench MySQL, dan saya menulis pernyataan di editor SQL dari dalam workbench. Saya menulis perintah berikut:
UPDATE tablename SET columnname=1;
Ini memberi saya kesalahan berikut:
Anda menggunakan mode pembaruan aman dan Anda mencoba memperbarui tabel tanpa WHERE yang menggunakan kolom KUNCI Untuk menonaktifkan mode aman, aktifkan opsi ....
Saya mengikuti instruksi, dan saya hapus centang safe update
opsi dari Edit
menu Preferences
kemudian SQL Editor
. Kesalahan yang sama masih muncul & saya tidak dapat memperbarui nilai ini. Tolong, beri tahu saya apa yang salah?
mysql
sql-update
mysql-workbench
Juri A
sumber
sumber
Jawaban:
Sepertinya sesi MySql Anda telah menetapkan opsi pembaruan aman . Ini berarti bahwa Anda tidak dapat memperbarui atau menghapus rekaman tanpa menentukan kunci (mis.
primary key
) Dalam klausa where.Mencoba:
Atau Anda dapat mengubah kueri Anda untuk mengikuti aturan (gunakan
primary key
dalamwhere clause
).sumber
SET SQL_SAFE_UPDATES = 1
ketika Anda selesai, karena ini adalah fitur keselamatan yang bermanfaat.Ikuti langkah-langkah berikut sebelum menjalankan perintah UPDATE: Di MySQL Workbench
Edit
->Preferences
"SQL Editor"
tab danuncheck
"Pembaruan Aman"check box
Query
->Reconnect to Server
// logout lalu loginps, Tidak perlu me-restart daemon MySQL!
sumber
"Sql Editor"
bukan"Sql Queries"
dan kemudian ada kotak centang di bagian bawah untuk"Safe Updates"
sumber
Tidak perlu mengatur SQL_SAFE_UPDATES ke 0 , saya akan benar-benar mencegahnya untuk melakukannya dengan cara itu. SAFE_UPDATES secara default aktif untuk REASON. Anda dapat mengendarai mobil tanpa sabuk pengaman dan hal-hal lain jika Anda tahu apa yang saya maksud;) Tambahkan saja di WHERE klausa nilai-KUNCI yang cocok dengan segala sesuatu seperti kunci primer dibandingkan dengan 0, jadi alih-alih menulis:
Sekarang Anda dapat yakin bahwa setiap record (SELALU) diperbarui seperti yang Anda harapkan.
sumber
WHERE id > 0
sebagai tipuan di sepanjang garis ini.Semua yang diperlukan adalah: Mulai kueri baru dan jalankan:
Lalu: Jalankan kueri yang Anda coba jalankan yang sebelumnya tidak berfungsi.
sumber
SET SQL_SAFE_UPDATES = 0;
kode SQL Anda di sini
SET SQL_SAFE_UPDATES = 1;
sumber
Kode Kesalahan: 1175. Anda menggunakan mode pembaruan aman dan Anda mencoba memperbarui tabel tanpa WHERE yang menggunakan kolom KUNCI Untuk menonaktifkan mode aman, aktifkan opsi di Preferensi -> SQL Editor dan hubungkan kembali.
Matikan "Safe Update Mode" sementara
Matikan "Mode Pembaruan Aman" selamanya
Meja kerja Mysql 8.0:
Versi lama dapat:
sumber
sumber
ATAU
Pergi ke
Edit --> Preferences
Klik
SQL Queries
tab dan hapusSafe Updates
centang pada kotak centangQuery --> Reconnect to Server
Sekarang jalankan query sql Anda
sumber
Jika Anda berada dalam mode aman, Anda harus memberikan id di mana klausa. Jadi sesuatu seperti ini seharusnya bekerja!
sumber
Pada WorkBench saya menyelesaikannya Dengan menonaktifkan mode pembaruan aman:
-Edit -> Preferensi -> Sql Editor kemudian hapus centang pembaruan Aman.
sumber
Saya menemukan jawabannya. Masalahnya adalah bahwa saya harus mendahului nama tabel dengan nama skema. yaitu, perintahnya harus:
Terima kasih semuanya.
sumber
qms-active-db
.gh_table set bookmark = '1660_207100000001000'Dalam MySQL Workbech versi 6.2 tidak keluar dari Preferensi
Dalam hal ini mungkin digunakan:SQLQueries
opsi .SET SQL_SAFE_UPDATES=0;
sumber
Solusi paling sederhana adalah dengan menentukan batas baris dan mengeksekusi. Ini dilakukan untuk tujuan keamanan.
sumber
Karena pertanyaan itu dijawab dan tidak ada hubungannya dengan pembaruan yang aman, ini mungkin tempat yang salah; Saya akan memposting hanya untuk menambahkan informasi.
Saya mencoba menjadi warga negara yang baik dan memodifikasi kueri untuk menggunakan tabel temp id yang akan diperbarui:
Kegagalan. Mengubah pembaruan menjadi:
Itu berhasil. Ya ampun - jika saya selalu menambahkan di mana kunci <> 0 untuk menyiasati pemeriksaan pembaruan yang aman, atau bahkan mengatur SQL_SAFE_UPDATE = 0, maka saya telah kehilangan 'centang' pada permintaan saya. Saya mungkin juga hanya mematikan opsi secara permanen. Saya kira itu membuat menghapus dan memperbarui proses dua langkah, bukan satu .. tetapi jika Anda mengetik cukup cepat dan berhenti berpikir tentang kunci yang menjadi istimewa tetapi lebih sebagai hanya gangguan ..
sumber
Benar, ini tidak ada gunanya untuk sebagian besar contoh. Tapi akhirnya, saya sampai pada pernyataan berikut dan itu berfungsi dengan baik:
sumber
Ini untuk Mac, tetapi harus sama untuk OS lain kecuali lokasi preferensi.
Kesalahan kami dapatkan ketika kami mencoba
DELETE
operasi yang tidak amanDi jendela baru, hapus centang opsi
Safe updates
Kemudian tutup dan buka kembali koneksi. Tidak perlu memulai ulang layanan.
Sekarang kita akan mencoba
DELETE
lagi dengan hasil yang sukses.Jadi apa semua tentang pembaruan yang aman ini? Itu bukan hal yang jahat. Inilah yang dikatakan MySql tentang hal itu.
Menggunakan
--safe-updates
OpsiAman untuk mengaktifkan opsi ini saat Anda berurusan dengan basis data produksi. Jika tidak, Anda harus sangat berhati-hati agar tidak secara tidak sengaja menghapus data penting.
sumber