Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL PowerCOBOL (ActiveX, v4 - v11)
PowerCOBOL (ActiveX, v4 - v11) Versiones del IDE basadas en ActiveX
 
Respuesta
 
Herramientas

  #1
Antiguo 20 de enero de 2026, 16:51
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 19.09.2026 12:26
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492
Base de datos Error 22008 de MaríaDb en INSERT/UPDATE
1 Inactivo Inactivo

¡¡¡ Hooolaa a tod@s de nuevo !!!

Hace ya tiempo que no posteo por aquí, entre otras cosas porque esto está últimamente muy silencioso, no sé si porque la gente es muy lista y ya no tiene dudas, o que todas las posibles dudas están ya solucionadas, (cosa que dudo bastante ... ), bueno a lo que íbamos, hace unos meses que dejé de programar, por medio-jubilación y, sobre todo, por el tema del VERIFACTU y lo que se nos viene encima después, (y que aún no se sabe oficialmente), ya no estoy para "certificar" programas, hacer pruebas de conexiones con hacienda y demás chorradas que exigen, así que mi consejo a los pocos clientes que aún mantenía, "cambiar a otro programa que esté certificado, porque el mío, no lo va a estar", "yo os ayudaré en todo lo posible", etc, etc.

Aún así, tengo un buen cliente que se cambió a SAGE50 pero, necesita hacer "albaranes especiales", así que estoy haciéndole un pequeño programa que pueda leer los artículos, clientes, etc de SAGE50, y grabar esos albaranes. Uso el entorno de MaríaDb, por no mezclar con SQLServer, que es el que usa Sage y por costumbre también, el problema es que al descargar la última versión de MaríaDb, (12.1.2), y del conector ODBC (3.28), el problema es que al grabar un registro que lleve caracteres especiales españoles, (ñ Ñ á ó ....), devuelve en SQLSTATUS el error 22008, las tablas están definidas con

Código SQL:
  1. COLLATE='utf8mb4_uca1400_spanish_ai_cs'

el fichero de configuración de my.ini, tiene añadidas las líneas

Código SQL:
  1. character-set-server = utf8mb4
  2. collation-server = utf8mb4_uca1400_spanish_ai_cs

y no había manera, tanto en un INSERT, como en un UPDATE, daba error. En las versiones anteriores de MariaDb, esto no pasaba, pues ni el DSN ni MariaDb eran tan estrictos, pero en la nuevas, sí, porque se comprueba mucho más el cotejamiento de datos, después de varios días y muuuuuchas pruebas, la solución es tan sencilla como que, al crear el DSN (ODBC para los despistados), añadirle la opción SET NAMES latin1, así, le estamos diciendo al ODBC que los datos que le van a llegar son con codificación latin1, (que es la que usa por defecto PowerCobol, pero que ha de convertirlos a utf8mb4, (la conversión inversa, ya la hace PWC automáticamente sin que le tengamos que decir nada)

Por cierto, uso utf8mb4_uca1400_spanish_ai_cs, (un COLLATE nuevo), porque es de las más rápidas y fiables para ordenaciones, consultas, etc, mucho más que la antigua utf8mb3_spanish_ci

Un salu2 para [email protected]

Miniatura de Adjuntos
Pulsar la imagen para la versión amplia
Nombre:  ODBC MariaDb y utf8mb4.jpg
Vistas: 69
Tamaño:  40,2 KB  
Josber is offline   Responder Con Cita
  #2
Antiguo 25 de enero de 2026, 19:34
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@Josber, esto de las codificaciones es un lío, y soy el primero en hacerme un lío, pero por lo que sé, latin1 es monobyte, formando parte de ASCII: ASCII/ISO 8859 (Latin-1) Table
Los utf8 son todos multibyte y cubren ASCII en todas sus vertientes...



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #3
Antiguo 26 de enero de 2026, 19:31
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 19.09.2026 12:26
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

Correcto @Kuk, un puñetero lío, con Latin1, no me reconoce los caracteres especiales tipo ä. á, ñ, Ñ ...., ya no sé si es porque los datos vienen de una tabla en SqlServer y MariaDb tiene otras codificaciones distintas a SQL o es culpa del demonio, el caso es que me ha costado un "güebo" arreglarlo pero como he puesto en el post anterior, así funciona perfectamente
Josber is offline   Responder Con Cita
Respuesta



Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 12:13.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.