Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kesalahan MySQL dilemparkan ketika pagination laravel digunakan

Dimungkinkan untuk menyetel mode SQL ONLY_FULL_GROUP_BY di MySQL 5.6, tetapi tidak disetel secara default (lihat https://dev.mysql.com/doc/refman/5.6/en/sql-mode.html ).

Aha, saya melihat komentar Anda muncul di atas, Anda telah mengkonfirmasi bahwa ONLY_FULL_GROUP_BY diatur pada server lokal Anda (MySQL 5.7).

Saya pikir Anda telah salah menyatakan sesuatu dalam deskripsi masalah Anda. Anda seharusnya mendapatkan kesalahan di server lokal Anda, tetapi tidak di server langsung, jika lokal memiliki ONLY_FULL_GROUP_BY dan siaran langsung tidak.

Saya sarankan Anda memastikan untuk menggunakan versi yang sama dalam pengembangan dengan versi yang Anda gunakan dalam produksi, dan juga cocok dengan mode SQL yang sama. Ini akan mencegah kebingungan selama pengembangan.

Saya membuat saran yang sama tentang versi PHP. Jika Anda menggunakan beberapa fitur PHP 7 baru dalam pengembangan, dan kemudian menerapkannya ke server langsung PHP 5.6, fitur tersebut tidak akan berfungsi.

SQL yang Anda gambarkan seharusnya baik-baik saja:

select count(*) as aggregate from `parameter_log_site_detail` where `site_id` = EPE

Ini sebenarnya baik-baik saja, bahkan jika Anda memiliki ONLY_FULL_GROUP_BY. Ini tentu legal untuk melakukan select count(*) dari semua baris yang cocok dalam tabel. Anda tidak memerlukan klausa GROUP BY untuk kueri ini.

Tetapi jika Anda mencampur kolom gabungan dengan kolom yang tidak digabungkan, Anda akan melanggar persyaratan ONLY_FULL_GROUP_BY, karena kolom yang tidak digabungkan akan menjadi ambigu.

select id, count(*) as aggregate from ...

Saya ingin tahu apakah Laravel memasukkan kolom tambahan ke dalam daftar pilihan Anda sebelum menyiapkan kueri. Anda harus mengaktifkan log kueri MySQL untuk memastikannya.

Saya perhatikan bahwa ada beberapa diskusi tentang kesalahan ini pada masalah Laravel:https://github.com /laravel/framework/issues/15232

Solusi yang dikatakan beberapa pengguna di utas itu memperbaiki masalah adalah dengan mengatur 'strict'=>false di config/database.php Laravel Anda.

Tapi saya berani bertaruh bahwa akar masalahnya adalah Laravel memodifikasi kueri SQL Anda.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sisipkan Abaikan - apakah ada cara untuk mengetahui apakah pernyataan diabaikan? MySQL

  2. Bagaimana saya bisa menghitung jumlah posting yang memiliki skor suara nol atau positif?

  3. MySQL INSERT INTO table SELECT FROM another_table, di dalam PROSEDUR

  4. kesalahan saat menggunakan mysql_real_escape_string()

  5. Tidak dapat langsung melihat data yang dimasukkan dari MySQL