-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Error al cargar ficha de especie #50
Comments
Parece un problem al actualizar la versión de MySQL -> https://stackoverflow.com/questions/34115174/error-related-to-only-full-group-by-when-executing-a-query-in-mysql |
Finalmente aplicando la solución publicada en este post se corrige el problema. Para ello hay que hacer lo siguiente:
SELECT @@sql_mode;
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'; No es necesario reiniciar el servicio de MySQL para ver los resultados del cambio. |
Parece que en ocasiones lo descrito en el post anterior no funciona bien, en ese caso, probar con lo descrito en este otro post -> https://www.lawebdelprogramador.com/foros/MySQL/1651514-error-1055.html |
El error se sigue produciendo ya que el fix propuesto parece que no es persistente. Es necesario buscar una solución a través de la modificación del código. |
El error se produce al usar un find de tipo "all" (https://book.cakephp.org/2/en/models/retrieving-your-data.html#find-all). Al usar este tipo de find, por defecto, siempre incluye la clave primaria entre los campos devueltos, por lo tanto, siempre nos obliga a incluir este campo en el group by, cuando realmente no lo necesitamos. public function obtenerTotalCitasPorCuadriculaUtm($especie_id) { $citas = $this -> find( 'all', array( 'conditions'=>array('Cita.especie_id'=>$especie_id), 'fields'=>array('COUNT(Cita.id) as total', 'Lugar.cuadricula_utm_id as cuadriculaUtm'), 'group'=>array('cuadriculaUtm') ) ); return $citas; } Se ha cambiado el tipo a "list" (https://book.cakephp.org/2/en/models/retrieving-your-data.html#find-list), esto hace que sólo se incluyan los campos especificados en "fields". El primer campo especificado hará de key del array devuelto. public function obtenerTotalCitasPorCuadriculaUtm($especie_id) { $citas = $this -> find( 'list', array( 'conditions'=>array('Cita.especie_id'=>$especie_id), 'fields'=>array('Lugar.cuadricula_utm_id as cuadriculaUtm', 'COUNT(Cita.id) as total'), 'group'=>array('cuadriculaUtm') ) ); return $citas; } Después de este cambio, se ha detectado otro problema en el uso de alias en queries de tipo findList, como se explica en este post -> https://stackoverflow.com/questions/6711927/cakephp-group-and-count-items-returned-in-list Finalmente se ha optado por crear un nuevo modelo llamado CitaCount con el campo virtual var $virtualFields = array( 'citas_count' => 'COUNT(CitaCount.id)' ); y el método se ha dejado así: public function obtenerTotalCitasPorCuadriculaUtm($especie_id) { $citas = $this -> find( 'list', array( 'joins' => array( array( 'table' => 'lugar', 'alias' => 'Lugar', 'type' => 'INNER', 'conditions' => array( 'Lugar.id = CitaCount.lugar_id' ) ) ), 'conditions'=>array('CitaCount.especie_id'=>$especie_id), 'fields'=>array('Lugar.cuadricula_utm_id', 'citas_count'), 'group'=>array('Lugar.cuadricula_utm_id') ) ); return $citas; } Este cambio se ha incluido como parte de la resolución de este ticket #66 |
…as en la ficha de especie reportado en el issue #50
Falla al cargar la ficha de especie (Especie->lista de aves->ver ficha de la especie) de queda en "Por favor, espere...".
En el log aparece el siguiente error:
The text was updated successfully, but these errors were encountered: