{"id":643,"date":"2011-07-16T17:10:21","date_gmt":"2011-07-16T16:10:21","guid":{"rendered":"https:\/\/blogs.ua.es\/miguelon\/?p=643"},"modified":"2011-07-16T17:10:21","modified_gmt":"2011-07-16T16:10:21","slug":"cambiando-el-collation-en-mysql-migrando-moodle-2-0","status":"publish","type":"post","link":"https:\/\/blogs.ua.es\/miguelon\/2011\/07\/cambiando-el-collation-en-mysql-migrando-moodle-2-0\/","title":{"rendered":"Cambiando el collation en MySQL (migrando Moodle =2.0)"},"content":{"rendered":"<p>Esta semana decid\u00ed migrar algunos sistemas Moodle que uso habitualmente. El de moodle.rvg.ua.es que usamos para un curso de formaci\u00f3n en la Universidad y el de www.proweb.ua.es\/moodle del curso de Experto en Programaci\u00f3n Web 2.0. Este proceso de migraci\u00f3n es un poco delicado, por cosas que poco tienen que ver con Moodle. Voy a poner lo que m\u00e1s trabajo me ha dado, que tambi\u00e9n puede servir para otros problemas, no s\u00f3lo Moodle.<\/p>\n<p>En una base de datos (por ejemplo, MySQL, se usan los juegos de caracteres (Character set) para las tablas y los campos cuyo tipo sea car\u00e1cter. No elegir un buen juego de caracteres puede llevar a que (lo m\u00e1s habitual) no se vean bien los acentos en castellano. Pero tambi\u00e9n hay que tener cuidado con los collations (cotejamientos). Estos collations son un juego de reglas para comparar caracteres de un juego de caracteres (perd\u00f3n por la redundancia). El hecho es que dan bastantes quebraderos de cabeza y alguna vez puede ser \u00fatil cambiarlos. Voy a explicar aqu\u00ed una manera sencilla de hacerlo, ya que no me qued\u00f3 m\u00e1s remedio al actualizar la versi\u00f3n de Moodle.<\/p>\n<p>Resulta que Moodle, a partir de su versi\u00f3n 2.0 (yo instal\u00e9 la 2.1+) usa, para todas sus tablas y columnas con texto, el collation utf8_unicode_ci y las tablas antiguas ten\u00edan utf8_general_ci y son incompatibles!!. Nada m\u00e1s empezar a instalar me sali\u00f3 un mensaje de error donde me lo dec\u00eda. Moodle tiene much\u00edsimas tablas y no me plante\u00e9 hacer el cambio una a una. En <a href=\"http:\/\/www.linuxhispano.net\/2010\/09\/06\/modificar-el-juego-de-caracteres-de-una-base-de-datos-y-todas-sus-tablas-en-mysql\/\">este art\u00edculo<\/a> encontrar\u00e9is el c\u00f3digo PHP necesario para cambiar todas las tablas de una sola vez :-).<\/p>\n<p>Yo era feliz, qu\u00e9 bueno, en dos minutos todo cambiado. JA! No s\u00e9 bien porqu\u00e9 algunas columnas quedaron todav\u00eda con el utf8_general_ci y me empez\u00f3 a dar problemas cuando intentaba actualizar, ya que mezclaba collations. No me qued\u00f3 m\u00e1s remedio (ya no quise buscar m\u00e1s, eran dos tablas) que instalar PhpMyAdmin y cambiar a mano las tablas que me daban problema. El error que me daba era algo como esta salida que pongo m\u00e1s abajo. Simplemente hay que comprobar si alguna de las tablas implicadas tiene alguna columna en formato utf8_general_ci y cambiarlo por utf8_unicode_ci.<\/p>\n<pre>Error reading from database<a href=\"http:\/\/docs.moodle.org\/21\/en\/error\/moodle\/dmlreadexception\">More information about this error<\/a><\/pre>\n<pre><strong>Debug info:<\/strong> Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='\r\nSELECT po.id AS oldpage_id, po.pagename AS oldpage_pagename, po.version, po.flags,\r\n po.content, po.author, po.userid AS oldpage_userid,  po.created, po.lastmodified, po.refs, po.meta, po.hits, po.wiki,\r\n p.id AS newpage_id, p.subwikiid, p.title,  p.cachedcontent, p.timecreated, p.timemodified AS newpage_timemodified,\r\n p.timerendered, p.userid AS newpage_userid,  p.pageviews, p.readonly, e.id AS entry_id, e.wikiid, e.course AS  entrycourse,\r\n e.groupid, e.userid AS entry_userid, e.pagename AS entry_pagename, e.timemodified AS entry_timemodified,\r\n w.id AS wiki_id, w.course AS wiki_course, w.name, w.summary AS summary, w.pagename AS wiki_pagename, w.wtype,\r\n w.ewikiprinttitle, w.htmlmode, w.ewikiacceptbinary,  w.disablecamelcase, w.setpageflags, w.strippages, w.removepages,\r\n w.revertchanges, w.initialcontent, w.timemodified AS wiki_timemodified,\r\n cm.id AS cmid\r\n FROM mdl_wiki_pages_old po\r\n LEFT OUTER JOIN mdl_wiki_entries_old e ON e.id = po.wiki\r\n LEFT OUTER JOIN mdl_wiki w ON w.id = e.wikiid\r\n LEFT OUTER JOIN mdl_wiki_subwikis s ON e.groupid = s.groupid AND e.wikiid = s.wikiid AND e.userid = s.userid\r\n LEFT OUTER JOIN mdl_wiki_pages p ON po.pagename = p.title AND p.subwikiid = s.id\r\n JOIN mdl_modules m ON m.name = 'wiki'\r\n JOIN mdl_course_modules cm ON (cm.module = m.id AND cm.instance = w.id)\r\n[array (\r\n)]<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Esta semana decid\u00ed migrar algunos sistemas Moodle que uso habitualmente. El de moodle.rvg.ua.es que usamos para un curso de formaci\u00f3n en la Universidad y el de www.proweb.ua.es\/moodle del curso de Experto en Programaci\u00f3n Web 2.0. Este proceso de migraci\u00f3n es &hellip; <a href=\"https:\/\/blogs.ua.es\/miguelon\/2011\/07\/cambiando-el-collation-en-mysql-migrando-moodle-2-0\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":342,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[374],"tags":[1307,889],"class_list":["post-643","post","type-post","status-publish","format-standard","hentry","category-programacion","tag-moodle","tag-mysql"],"_links":{"self":[{"href":"https:\/\/blogs.ua.es\/miguelon\/wp-json\/wp\/v2\/posts\/643","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ua.es\/miguelon\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ua.es\/miguelon\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/miguelon\/wp-json\/wp\/v2\/users\/342"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/miguelon\/wp-json\/wp\/v2\/comments?post=643"}],"version-history":[{"count":1,"href":"https:\/\/blogs.ua.es\/miguelon\/wp-json\/wp\/v2\/posts\/643\/revisions"}],"predecessor-version":[{"id":644,"href":"https:\/\/blogs.ua.es\/miguelon\/wp-json\/wp\/v2\/posts\/643\/revisions\/644"}],"wp:attachment":[{"href":"https:\/\/blogs.ua.es\/miguelon\/wp-json\/wp\/v2\/media?parent=643"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ua.es\/miguelon\/wp-json\/wp\/v2\/categories?post=643"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ua.es\/miguelon\/wp-json\/wp\/v2\/tags?post=643"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}