Saya secara tidak sengaja mengaktifkan mode ONLY_FULL_GROUP_BY seperti ini:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
Bagaimana cara menonaktifkannya?
column
) untuk me -retrofit permintaan Anda. Lihat dokumen di sini
Saya secara tidak sengaja mengaktifkan mode ONLY_FULL_GROUP_BY seperti ini:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
Bagaimana cara menonaktifkannya?
column
) untuk me -retrofit permintaan Anda. Lihat dokumen di sini
Jawaban:
Solusi 1: Hapus ONLY_FULL_GROUP_BY dari konsol mysql
mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Anda dapat membaca lebih lanjut di sini
Solusi 2: Hapus ONLY_FULL_GROUP_BY dari phpmyadmin
REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')
, MySQL tetap menghapus koma yang tidak diinginkan dari catatan. Jawaban OP benar.
GLOBAL
tidak bekerja untuk saya, tetapi SESSION
berhasil. SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Untuk mempertahankan dan menonaktifkan pengaturan mysql Anda saat ini, ONLY_FULL_GROUP_BY
saya sarankan untuk mengunjungi phpmyadmin Anda atau klien apa pun yang Anda gunakan dan ketik:
SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','') copy_me
hasil salinan selanjutnya ke my.ini
file Anda .
mint :sudo nano /etc/mysql/my.cnf
ubuntu 16 dan lebih tinggi :sudo nano /etc/mysql/my.cnf
ubuntu 14-16 :/etc/mysql/mysql.conf.d/mysqld.cnf
copy_me
hasil dapat berisi teks panjang yang mungkin dipangkas secara default. Pastikan Anda menyalin seluruh teks!jawaban lama:
Jika Anda ingin menonaktifkan kesalahan secara permanen " Ekspresi #N dari daftar SELECT tidak dalam klausa GROUP BY dan berisi kolom nonaggregated 'db.table.COL' yang tidak secara fungsional bergantung pada kolom dalam klausa GROUP BY, ini tidak sesuai dengan sql_mode = only_full_group_by "lakukan langkah-langkah itu:
sudo nano /etc/mysql/my.cnf
Tambahkan ini ke akhir file
[mysqld]
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
sudo service mysql restart
untuk me-restart MySQL
Ini akan menonaktifkan ONLY_FULL_GROUP_BY
untuk SEMUA pengguna
/etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
mungkin tidak ada di file ini, mungkin di direktori include. Gunakan perintah ini terlebih dahulu: grep -R "\[mysqld\]" *
untuk melihat apa yang ada - dan dalam hal ini cobagrep -R "\bsql_mode\b" *
Hati-hati menggunakan
SET sql_mode = ''
Ini sebenarnya membersihkan semua mode yang saat ini diaktifkan. Jika Anda tidak ingin mengacaukan dengan pengaturan lain, Anda ingin melakukan
SELECT @@sql_mode
pertama, untuk mengaktifkan daftar mode yang dipisahkan koma, lalu SET ke daftar ini tanpa ONLY_FULL_GROUP_BY
opsi.
then SET it to this list without the ONLY_FULL_GROUP_BY option.
:?
SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
sql_mode=<comma-separated-list>
:, lalu berhenti dan mulai server Anda. Ikuti dokumen untuk sistem operasi Anda untuk lokasi, dan cara terbaik untuk mengedit, my.cnf.
Cobalah ini:
SET sql_mode = ''
Catatan Komunitas: Seperti yang ditunjukkan dalam jawaban di bawah, ini sebenarnya menghapus semua mode SQL yang saat ini diaktifkan. Itu belum tentu yang Anda inginkan.
''
= 'full group by is disabled'
? MySQL melakukan beberapa hal yang sangat bodoh tetapi yang di atas sana.
0 rows affected
dan permintaan saya masih tidak berfungsi:Error Code: 1055. Expression #6 of SELECT list is not in GROUP BY clause and contains nonaggregated column ...
global
dalam perintah .
mysql> set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql> set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql> exit;
sql_mode
rollback ke nilai sebelumnya. Apa yang bisa saya lakukan sekarang?
Menambahkan hanya satu mode ke sql_mode tanpa menghapus yang sudah ada:
SET sql_mode=(SELECT CONCAT(@@sql_mode,',<mode_to_add>'));
Menghapus hanya mode tertentu dari sql_mode tanpa menghapus yang lain:
SET sql_mode=(SELECT REPLACE(@@sql_mode,'<mode_to_remove>',''));
Dalam kasus Anda, jika Anda ingin menghapus hanya ONLY_FULL_GROUP_BY
mode, maka gunakan perintah di bawah ini:
SET sql_mode=(SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));
Referensi: http://johnemb.blogspot.com/2014/09/adding-or-removing-individual-sql-modes.html
Terima kasih kepada @cwhisperer. Saya memiliki masalah yang sama dengan Doctrine di aplikasi Symfony. Saya baru saja menambahkan opsi ke config.yml saya:
doctrine:
dbal:
driver: pdo_mysql
options:
# PDO::MYSQL_ATTR_INIT_COMMAND
1002: "SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))"
Ini bekerja dengan baik untuk saya.
SET NAMES
menggunakan metode ini, dalam banyak kasus tidak diperlukan symfony sudah mengaturnya melalui doctrine.dbal.charset cofnig: symfony.com/doc/current/reference/configuration/doctrine.html , dan melakukannya dengan benar melalui PDO dns, SET NAMES adalah cara yang sudah ketinggalan zaman, yang seharusnya tidak digunakan untuk versi PHP yang lebih besar dari 5.3
Di:
Melakukan:
$ sudo nano /etc/mysql/conf.d/mysql.cnf
Salin dan tempel:
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Ke bagian bawah file
$ sudo service mysql restart
/etc/mysql/mysql.cnf
menunjuk ke 2 folder konfigurasi !includedir /etc/mysql/conf.d/
+ !includedir /etc/mysql/mysql.conf.d/
. Sama berlaku untuk /etc/mysql/my.cnf
. Oleh karena itu saya berasumsi bahwa file konfigurasi tidak diganti setelah pembaruan. Anda dapat membaca lebih lanjut di sinihttp://dev.mysql.com/doc/mysql/en/server-system-variables.html
sql_mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
mungkin penting untuk membuat file baru /etc/mysql/mysql.conf.d/mysqld_mode.cnf
sebagai gantinya
Saya perhatikan bahwa solusi @Eyo Okon Eyo berfungsi selama server MySQL tidak direstart, kemudian pengaturan default dipulihkan. Ini solusi permanen yang bekerja untuk saya:
Untuk menghapus mode SQL tertentu (dalam hal ini ONLY_FULL_GROUP_BY ), cari mode SQL saat ini:
SELECT @@GLOBAL.sql_mode;
salin hasilnya dan hapus apa yang tidak Anda butuhkan ( ONLY_FULL_GROUP_BY )
misalnya:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
untuk
STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
buat dan buka file ini:
/etc/mysql/conf.d/disable_strict_mode.cnf
dan tulis dan lewati ke dalamnya mode SQL baru Anda:
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
restart MySQL:
sudo service mysql restart
Atau Anda dapat menggunakan ANY_VALUE()
untuk menekan ONLY_FULL_GROUP_BY penolakan nilai, Anda dapat membaca lebih lanjut tentang hal ini di sini
ANY_VALUE()
The dokumentasi MySQL juga menentukan metode berikut:
sql-mode="<modes>"
dalam file opsi seperti my.cnf (sistem operasi Unix) atau my.ini (Windows).--sql-mode="<modes>"
opsi.* Di mana <modes>
daftar mode yang berbeda dipisahkan oleh koma.
Untuk menghapus mode SQL secara eksplisit, atur ke string kosong menggunakan --sql-mode=""
pada baris perintah, atau sql-mode=""
dalam file opsi.
Saya menambahkan sql-mode=""
opsi ke /etc/my.cnf
dan itu berhasil.
Solusi SO ini membahas cara untuk mencari tahu file my.cnf mana yang sedang digunakan oleh MySQL.
Jangan lupa untuk me-restart MySQL setelah membuat perubahan.
SELECT @@GLOBAL.sql_mode;
Jika Anda menggunakan WAMP. Klik kiri pada ikon WAMP lalu goto MySQL -> pengaturan MySQL -> sql-mode dan kemudian pilih sql-mode-> mode pengguna
Di sql saya (versi 5.7.11 berjalan pada Mac OS X) ini berfungsi untuk saya di klien shell mysql:
SET
@@GLOBAL.sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
Menurut Dokumentasi MySQL 5.6, sql_mode adalah default
string kosong di MySQL 5.6.5 dan kembali NO_ENGINE_SUBSTITUTION, STRICT_TRANS_TABLES dalam 5.6.6 +
sql_mode := ''
dimungkinkan. Mengapa Anda tidak setuju?
Di MySQL 5.7 dan Ubuntu 16.04, edit file mysql.cnf.
$ sudo nano /etc/mysql/conf.d/mysql.cnf
Sertakan sql_mode seperti berikut dan simpan file.
[mysql]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Perhatikan bahwa, dalam kasus saya, saya menghapus mode STRICT_TRANS_TABLES dan ONLY_FULL_GROUP_BY.
Melakukan ini, itu akan menyimpan konfigurasi mode secara permanen. Berbeda jika Anda hanya memperbarui @@ sql_mode melalui MySQL, karena itu akan mengatur ulang pada mesin / layanan restart.
Setelah itu, agar konfigurasi yang dimodifikasi berfungsi, restart layanan mysql:
$ sudo service mysql restart
Cobalah mengakses mysql:
$ mysql -u user_name -p
Jika Anda dapat masuk dan mengakses konsol MySQL, tidak apa-apa. Bagus!
TAPI , jika seperti saya, Anda menghadapi kesalahan "variabel tidak dikenal sql_mode" , yang menunjukkan bahwa sql_mode adalah opsi untuk mysqld , Anda harus kembali, mengedit file mysql.cnf lagi dan mengubah [mysql]
ke [mysqld]
. Mulai ulang layanan MySQL dan lakukan tes terakhir mencoba masuk pada konsol MySQL. Ini dia!
Ini yang saya lakukan untuk memperbaiki meja kerja Mysql:
Sebelum saya mendapat nilai saat ini dengan perintah di bawah ini
SELECT @@sql_mode
kemudian saya menghapus kunci ONLY_FULL_GROUP_BY dari daftar dan saya menempelkan perintah di bawah ini
SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
Untuk Mac OS Mojave (10.14) Buka terminal
$ sudo mkdir /usr/local/mysql-5.7.24-macos10.14-x86_64/etc
$ cd /usr/local/mysql-5.7.24-macos10.14-x86_64/etc
$ sudo nano my.cnf
Rekatkan sebagai berikut:
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
Shortkeys to Save & Exit nano: Ctrl+x
and y
danEnter
Catatan: Anda mungkin perlu memperbaruimysql-5.7.24-macos10.14-x86_64
dalam perintah ini, cukup periksa nama folder yang benar yang ada di dalamnya/usr/local/
Semoga ini bisa membantu seseorang!
sql_mode
MySQL 5.7.9 atau lebih baru
Untuk menambah atau menghapus mode sql_mode
, Anda dapat menggunakan list_add
dan list_drop
fungsinya.
Untuk menghapus mode dari saat ini SESSION.sql_mode
, Anda dapat menggunakan salah satu dari berikut ini:
SET SESSION sql_mode = sys.list_drop(@@SESSION.sql_mode, 'ONLY_FULL_GROUP_BY');
SET sql_mode = sys.list_drop(@@sql_mode, 'ONLY_FULL_GROUP_BY');
SET @@sql_mode = sys.list_drop(@@sql_mode, 'ONLY_FULL_GROUP_BY');
Untuk menghapus mode dari GLOBAL.sql_mode
yang ada untuk operasi runtime saat ini , hingga layanan dimulai kembali .
SET GLOBAL sql_mode = sys.list_drop(@@GLOBAL.sql_mode, 'ONLY_FULL_GROUP_BY');
MySQL 5.7.8 atau sebelumnya
Karena sql_mode
nilainya adalah string mode CSV, Anda perlu memastikan bahwa string tersebut tidak mengandung koma residual, yang dapat diselesaikan dengan menggunakan TRIM(BOTH ',' FROM ...)
.
Untuk menghapus mode dari sql_mode
variabel, Anda ingin menggunakannya REPLACE()
bersama TRIM()
untuk memastikan setiap koma residual dihapus.
SET SESSION sql_mode = TRIM(BOTH ',' FROM REPLACE(@@SESSION.sql_mode, 'ONLY_FULL_GROUP_BY', ''));
SET GLOBAL sql_mode = TRIM(BOTH ',' FROM REPLACE(@@GLOBAL.sql_mode, 'ONLY_FULL_GROUP_BY', ''));
Untuk menambahkan mode ke sql_mode
variabel, Anda ingin menggunakan CONCAT_WS(',', ...)
, untuk memastikan koma ditambahkan dengan mode saat ini dan TRIM()
untuk memastikan setiap koma residual dihapus.
SET SESSION sql_mode = TRIM(BOTH ',' FROM CONCAT_WS(',', 'ONLY_FULL_GROUP_BY', @@SESSION.sql_mode));
SET GLOBAL sql_mode = TRIM(BOTH ',' FROM CONCAT_WS(',', 'ONLY_FULL_GROUP_BY', @@GLOBAL.sql_mode));
CATATAN: Mengubah
GLOBAL
variabel tidak menyebar keSESSION
variabel, hingga koneksi baru dibuat.The
GLOBAL
variabel akan bertahan sampai layanan yang berjalan-restart.The
SESSION
variabel akan bertahan untuk sambungan saat ini, sampai koneksi tertutup dan koneksi baru didirikan.
GLOBAL.sql_mode
Karena SET sql_mode = 'ONLY_FULL_GROUP_BY';
dijalankan tanpa GLOBAL
pengubah, perubahan hanya memengaruhi nilai SESSION
kondisi saat ini , yang juga berkaitan dengan @@sql_mode
. Untuk menghapusnya dan kembali ke default global pada nilai restart server , Anda ingin menggunakan nilai dari @@GLOBAL.sql_mode
. [sic]
Nilai saat
SESSION
ini hanya berlaku untuk koneksi saat ini. Menghubungkan kembali ke server akan mengembalikan nilai kembali keGLOBAL
nilai.
Untuk mengembalikan nilai status sesi saat ini ke nilai global saat ini, Anda dapat menggunakan salah satu dari berikut ini:
SET SESSION sql_mode = @@GLOBAL.sql_mode;
SET @@sql_mode = @@GLOBAL.sql_mode;
SET sql_mode = @@GLOBAL.sql_mode;
Ubah SESSION.sql_mode
nilai menjadiONLY_FULL_GROUP_BY
SET sql_mode = 'ONLY_FULL_GROUP_BY';
SELECT @@sql_mode, @@GLOBAL.sql_mode;
+--------------------+----------------------------------------------+
| @@sql_mode | @@GLOBAL.sql_mode |
+--------------------+----------------------------------------------+
| ONLY_FULL_GROUP_BY | NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION |
+--------------------+----------------------------------------------+
Kembalikan SESSION.sql_mode
nilai ke GLOBAL.sql_mode
nilai
SET sql_mode = @@GLOBAL.sql_mode;
SELECT @@sql_mode, @@GLOBAL.sql_mode;
+----------------------------------------------+----------------------------------------------+
| @@sql_mode | @@GLOBAL.sql_mode |
+----------------------------------------------+----------------------------------------------+
| NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION | NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------+----------------------------------------------+
sql_mode
Untuk mengatur mode SQL pada startup server, gunakan
--sql-mode="modes"
opsi pada baris perintah, atausql-mode="modes"
dalam file opsi seperti my.cnf (sistem operasi Unix) atau my.ini (Windows). [sic]
Silakan lihat versi MySQL Anda untuk menentukan mode yang didukung dan default .
[mysqld]
sql-mode="NO_ENGINE_SUBSTITUTION" #default <= 5.7.4
sql_mode
Nilai defaultKarena nilai dokumentasi per versi MySQL telah dihapus, saya telah menambahkannya di sini untuk referensi Anda.
MySQL> = 8.0.11 8.0.5 - 8.0.10 Dilewati
ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_ENGINE_SUBSTITUTION
MySQL> = 5.7.8, <= 8.0.4
ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION
MySQL 5.7.7
ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION
MySQL> = 5.7.5, <= 5.7.6
ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ENGINE_SUBSTITUTION
MySQL> = 5.6.6, <= 5.7.4
NO_ENGINE_SUBSTITUTION
MySQL <= 5.6.5
''
Jika Anda menggunakan MySQL 8.0.11, Anda harus menghapus 'NO_AUTO_CREATE_USER' dari sql-mode.
Tambahkan baris berikut dalam file /etc/mysql/my.cnf
dan tajuk [mysqld]
[mysqld]
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
Saya menggunakan doktrin dan saya telah menambahkan driverOptions di doctrine.local.php saya:
return array(
'doctrine' => array(
'connection' => array(
'orm_default' => array(
'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
'params' => array(
'host' => 'localhost',
'port' => '3306',
'user' => 'myusr',
'password' => 'mypwd',
'dbname' => 'mydb',
'driverOptions' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))"
),
),
),
),
));
Dalam phpmyadmin, pengguna perlu SUPER diaktifkan di hak istimewa.
Untuk siapa yang menjalankan VPS / Server dengan cPanel / WHM , Anda dapat melakukan hal berikut untuk menonaktifkan ONLY_FULL_GROUP_BY secara permanen
Anda memerlukan akses root (baik di VPS atau server khusus)
Masukkan WHM sebagai root dan jalankan phpMyAdmin
Klik pada Variabel, cari sql_mode
, klik pada 'Edit' dan salin seluruh baris di dalam kotak teks itu
misalnya salin ini:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Terhubung ke server Anda melalui SFTP - SSH (root) dan unduh file /etc/my.cnf
Buka dengan my.cnf
file editor teks pada PC lokal Anda dan rekatkan ke dalamnya (di bawah [mysqld]
bagian) seluruh baris yang Anda salin pada langkah (2) tetapi hapusONLY_FULL_GROUP_BY,
mis. tempel ini:
# disabling ONLY_FULL_GROUP_BY
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Simpan my.cnf
file dan unggah kembali ke/etc/
Masukkan WHM dan pergi ke "WHM> Restart Services> SQL Server (MySQL)" dan restart layanan
Saya bekerja dengan mysql dan terdaftar dengan pengguna root, solusi yang berfungsi untuk saya adalah sebagai berikut:
mysql> SET SESSION sql_mode = (SELECT REPLACE (@@ sql_mode, 'ONLY_FULL_GROUP_BY', ''));
Ini adalah solusi permanen untuk MySql 5.7+ di Ubuntu 14+:
$ sudo bash -c "echo -e \"\nsql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\" >> /etc/mysql/mysql.conf.d/mysqld.cnf"
$ sudo service mysql restart
# Check if login attempt throws any errors
$ mysql -u[user] -p # replace [user] with your own user name
Jika Anda dapat masuk tanpa kesalahan - Anda harus siap sekarang.
Anda dapat menonaktifkannya menggunakan file konfigurasi my.cnf
:
$ mysql --verbose --help | grep my.cnf
Jadi di macOS 10.12, di usr/local/etc/my.cnf
. Anda dapat mengedit di sql_mode
sini:
# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
bind-address = 127.0.0.1
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
Ini solusi saya mengubah konfigurasi Mysql melalui dashboard phpmyadmin:
Untuk memperbaiki "ini tidak kompatibel dengan sql_mode = only_full_group_by": Buka Halaman Utama phpmyadmin dan goto dan pilih submenu 'Variabel'. Gulir ke bawah untuk menemukan mode sql. Edit mode sql dan hapus 'ONLY_FULL_GROUP_BY' Simpan.
SET sql_mode = ''
?