benedmunds / CodeIgniter-Ion-Auth

Simple and Lightweight Auth System for CodeIgniter
http://benedmunds.com/ion_auth/
MIT License
2.35k stars 1.14k forks source link

MySQL server has gone away - Invalid query #1548

Open gloobus opened 2 years ago

gloobus commented 2 years ago

CodeIgniter v3 + CodeIgniter-Ion-Auth PHP 7.4 MariaDB 5.5.68

CodeIgniter log:

ERROR - 2022-02-02 08:55:59 --> Query error: MySQL server has gone away - Invalid query: SELECT t_users.*, t_users.id as id, t_users.id as user_id FROM t_users WHERE t_users.id = '546' ORDER BY t_users.id DESC LIMIT 1

The problem was solved in the following way, Ion_auth_model.php:

$this->db->select([ $this->tables['users'].'.*', // $this->tables['users'].'.id as id', $this->tables['users'].'.id as user_id' ]);

https://github.com/benedmunds/CodeIgniter-Ion-Auth/blob/dc05585bb35f636b2d7cdc1959fcf5193a509ac4/models/Ion_auth_model.php#L1400

Why is ID as ID displayed in this SELECT? ID from the user table is still returned through <*>. After I removed the $this->tables['users'].'.id as id' output, the errors stopped

benedmunds commented 2 years ago

"MySQL server has gone away" is usually a connection error. Truthfully I don't remember the reason for this, I think it was to account for custom selects.

This code has been here for over 10 years though so my best guess is that it's a coincidence that this fixed it and there was a connection error. It is possible that a newer MySQL version is failing on this though.