Hace unos días tuve un problema al obtener datos serializados almacenados en una base de datos MySQL. Los datos se guardaban con serialize() (se que con JSON es mejor pero se necesitaba guardar el objeto PHP) pero al momento de cargar el arreglo de objeto con unserialize() me arrojaba el siguiente error:
yii\base\ErrorException: unserialize(): Error at offset 579 of 664 bytes
Luego de varias horas intentando solucionar el error. Encontré en stack overflow que el problema ocurre con la codificación de los campos de texto (text) en la base de datos. Cuando se obtiene la información, si la codificación usada por PHP es diferente con la de la BD el número de bytes indicado por serialize() no coincide y la lectura se hace mal, ocasionando el error mencionado.
Solución al problema
La forma de solucionar el problema es cambiar la codificación del campo tipo texto, por ejemplo, en mi caso estaba con utf_general_ci y tuve que cambiarla a utf8_general_ci:
ALTER TABLE nombre_de_tabla
MODIFY tu_columna VARCHAR(255) CHARACTER SET utf8
COLLATE utf8_unicode_ci;
¡Listo!, con esto no deberías presentar el problema de nuevo.
Sé el primero en comentar