Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Error en la inserción de tablas

USE ventas_jugos;

SELECT * FROM jugos_ventas.tabla_de_productos;

SELECT CODIGO_DEL_PRODUCTO AS CODIGO, NOMBRE_DEL_PRODUCTO AS DESCRIPCION, SABOR, TAMANO, ENVASE, PRECIO_DE_LISTA AS PRECIO_LISTA FROM jugos_ventas.tabla_de_productos WHERE CODIGO_DEL_PRODUCTO NOT IN (SELECT CODIGO FROM tb_producto);

INSERT INTO tb_producto SELECT CODIGO_DEL_PRODUCTO AS CODIGO, NOMBRE_DEL_PRODUCTO AS DESCRIPCION, SABOR, TAMANO, ENVASE, PRECIO_DE_LISTA AS PRECIO_LISTA FROM jugos_ventas.tabla_de_productos WHERE CODIGO_DEL_PRODUCTO NOT IN (SELECT CODIGO FROM tb_producto);

SELECT * FROM tb_producto;

14:03:06 SELECT CODIGO_DEL_PRODUCTO AS CODIGO, NOMBRE_DEL_PRODUCTO AS DESCRIPCION, SABOR, TAMANO, ENVASE, PRECIO_DE_LISTA AS PRECIO_LISTA FROM jugos_ventas.tabla_de_productos WHERE CODIGO_DEL_PRODUCTO NOT IN (SELECT CODIGO FROM tb_producto) LIMIT 0, 5000 Error Code: 1267. Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '=' 0.016 sec

Hola me da ese error y no sé cómo solucionarlo, hice lo mismo que en la clase, si me pueden ayudar, gracias.

1 respuesta

¡Hola Marisolsalas!

Entiendo que estás experimentando un error al intentar insertar datos en la tabla tb_producto desde la tabla tabla_de_productos de la base de datos jugos_ventas. El error que estás viendo, "Illegal mix of collations", se debe a que las collations de las columnas en ambas tablas no coinciden. Esto puede ocurrir si las tablas tienen diferentes configuraciones de collation para las columnas de tipo texto.

Para solucionar este problema, puedes intentar especificar explícitamente la collation en tu consulta para que coincida con la de la tabla destino. Por ejemplo, si la columna CODIGO_DEL_PRODUCTO tiene una collation utf8mb4_unicode_ci en la tabla de origen, puedes usar la cláusula COLLATE para forzar la misma collation en la comparación. Aquí te muestro un ejemplo de cómo podrías ajustar tu consulta:

INSERT INTO tb_producto 
SELECT 
    CODIGO_DEL_PRODUCTO AS CODIGO COLLATE utf8mb4_unicode_ci,
    NOMBRE_DEL_PRODUCTO AS DESCRIPCION COLLATE utf8mb4_unicode_ci,
    SABOR COLLATE utf8mb4_unicode_ci, 
    TAMANO COLLATE utf8mb4_unicode_ci, 
    ENVASE COLLATE utf8mb4_unicode_ci, 
    PRECIO_DE_LISTA AS PRECIO_LISTA
FROM jugos_ventas.tabla_de_productos
WHERE CODIGO_DEL_PRODUCTO NOT IN (SELECT CODIGO FROM tb_producto);

En este ejemplo, he agregado la cláusula COLLATE utf8mb4_unicode_ci después de cada columna de texto para forzar la misma collation que la tabla tb_producto.

Espero que esta solución te ayude a resolver el problema. Si sigues experimentando dificultades, no dudes en preguntar en el foro para obtener más ayuda.

Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!