{"id":456,"date":"2016-10-11T14:16:25","date_gmt":"2016-10-11T18:46:25","guid":{"rendered":"http:\/\/gregorgonzalez.com.ve\/blog\/?p=456"},"modified":"2016-10-11T14:16:25","modified_gmt":"2016-10-11T18:46:25","slug":"error-en-mysql-error-1031-hy000-table-storage-engine-for-table-doesnt-have-this-option","status":"publish","type":"post","link":"https:\/\/gregorgonzalez.com.ve\/blog\/error-en-mysql-error-1031-hy000-table-storage-engine-for-table-doesnt-have-this-option\/","title":{"rendered":"Error en MySql: ERROR 1031 (HY000) Table storage engine for \u2018table\u2019 doesn&#8217;t have this option"},"content":{"rendered":"<p>Despu\u00e9s de migrar de versi\u00f3n de MySql y actualizarme a la version 5.7, mis sql dejaron de funcionar y me percat\u00e9 de que varias tablas no fueron importadas.<\/p>\n<p>El mensaje que arrojaba el manejador es \u00abTable storage engine for &#8216;nombre_tabla&#8217; doesn&#8217;t have this option\u00bb, el cual no proporciona ninguna soluci\u00f3n o la causa que origin\u00f3 el problema. Despu\u00e9s de investigar y verificar, me top\u00e9 con varios art\u00edculos (en ingl\u00e9s) que indicaban como pudo suceder y la soluci\u00f3n. Para ayudar a otros a encontrar la respuesta, escribo este post.<\/p>\n<p>Instal\u00e9 el nuevo Ubuntu Server 16.04 y al instalar el mysql m\u00e1s actual, se instal\u00f3 la versi\u00f3n 5.7, la cual es la que presenta este problema debido a que la base de datos que import\u00e9, ten\u00eda varias tablas de tipo \u00abinnodb\u00bb con un motor de almacenamiento que no le pertenece, en este caso puedes ver en las estructuras de las tablas: \u00abROW_FORMAT=FIXED\u00bb. Este tipo de almacenamiento se elimin\u00f3 para \u00abinnodb\u00bb pero puede que funcione para tablas MyISAM, que por cierto la mayor\u00eda de mis tablas eran MyISAM, que fueron convertidas a innodb pero no se les cambi\u00f3 el row_format.<\/p>\n<h3>Soluci\u00f3n:<\/h3>\n<p>La soluci\u00f3n es simplemente eliminar \u00abROW_FORMAT=FIXED\u00bb antes de importarlo y as\u00ed utilizar\u00e1 el que tenga por defecto. Ojo, esto s\u00f3lo ocurre en la nueva versi\u00f3n porque est\u00e1 habilitado una opci\u00f3n \u201cinnodb_strict_mode\u201d por defecto, pero sino tiene la opci\u00f3n habilitada, MySql mostrar\u00e1 un simple warning y continuar\u00e1 la importaci\u00f3n, convirtiendo los\u00a0 \u00abFIXED\u00bb a \u00abCOMPACT\u00bb y no tendr\u00e1s ning\u00fan problema.<\/p>\n<h3>Verificaci\u00f3n:<\/h3>\n<p>Para verificar la opci\u00f3n actual del strict mode, puede usar el siguiente comando:<\/p>\n<pre class=\"lang:mysql decode:true \">show variables like '%strict%'<\/pre>\n<p>Lo podemos ver en la consola o en phpmyadmin. Las versiones anteriores de MySql por defecto lo tienen en \u201cOFF\u201d y a partir de la nueva version 5.7 la encontraremos en \u201cON\u201d.<\/p>\n<p>Anterior:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-457 aligncenter\" src=\"http:\/\/gregorgonzalez.com.ve\/blog\/wp-content\/uploads\/strict-mode-consola.png\" alt=\"strict-mode-consola\" width=\"318\" height=\"162\" srcset=\"https:\/\/gregorgonzalez.com.ve\/blog\/wp-content\/uploads\/strict-mode-consola.png 318w, https:\/\/gregorgonzalez.com.ve\/blog\/wp-content\/uploads\/strict-mode-consola-300x153.png 300w\" sizes=\"(max-width: 318px) 100vw, 318px\" \/><\/p>\n<p>Nueva:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-458 aligncenter\" src=\"http:\/\/gregorgonzalez.com.ve\/blog\/wp-content\/uploads\/strict-mode-phpmyadmin.png\" alt=\"strict-mode-phpmyadmin\" width=\"413\" height=\"445\" srcset=\"https:\/\/gregorgonzalez.com.ve\/blog\/wp-content\/uploads\/strict-mode-phpmyadmin.png 413w, https:\/\/gregorgonzalez.com.ve\/blog\/wp-content\/uploads\/strict-mode-phpmyadmin-278x300.png 278w\" sizes=\"(max-width: 413px) 100vw, 413px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Com\u00fanmente esta configuraci\u00f3n no se cambia, pero si deseas cambiarlo puedes hacerlo en archivo de configuraci\u00f3n \u00abmy.cnf\u00bb que se puede encontrar \u00ab\/etc\/mysql\/my.cnf\u00bb (Ubuntu Server)<\/p>\n<p>Buscamos la l\u00ednea donde indique \u00ab[mysqld]\u00bb (sino la tiene, cr\u00e9ala al final), tambi\u00e9n ah\u00ed se definen las opciones de configuraci\u00f3n de variable global, \u00absql_mode\u00bb que en versiones anteriores solo usaba una opci\u00f3n y en la nueva versi\u00f3n tiene m\u00faltiples que puede que te afecten, si posees alg\u00fan otro problema, tambi\u00e9n las puedes modificar y dejarla como las versiones anteriores.<\/p>\n<p>Agregando strict mode de innodb, al final del archivo, la opci\u00f3n es (ON\/OFF):<\/p>\n<blockquote><p>[mysqld]<\/p>\n<p>innodb_strict_mode = ON<\/p><\/blockquote>\n<p>Para los sql_mode, versiones anteriores:<\/p>\n<blockquote><p>[mysqld]<\/p>\n<p>innodb_strict_mode = OFF<\/p>\n<p>sql_mode=\u00bbNO_ENGINE_SUBSTITUTION\u00bb<\/p><\/blockquote>\n<p>Versiones nuevas a partir de MySql 5.7:<\/p>\n<blockquote><p>[mysqld]<\/p>\n<p>innodb_strict_mode = ON<\/p>\n<p>sql_mode=\u00bbSTRICT_TRANS_TABLES, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION\u00bb<\/p><\/blockquote>\n<p>Y para reiniciar el servicio \u00abservice mysql restart\u00bb (puede variar seg\u00fan el sistema operativo).<\/p>\n<p>Comparando estas configuraciones, podemos comprobar si est\u00e1n afectando a nuestra aplicaci\u00f3n y podremos migrar a la nueva versi\u00f3n sin mayores inconvenientes, seleccionando las opciones que nos convengan. Muchas veces al ver las complicaciones despu\u00e9s de una migraci\u00f3n, optamos por devolvernos a la versi\u00f3n anterior. Con un poco de paciencia y leyendo, podemos adaptarnos a las nuevas versiones y mantenernos al d\u00eda con la tecnolog\u00eda.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Despu\u00e9s de migrar de versi\u00f3n de MySql y actualizarme a la version 5.7, mis sql dejaron de funcionar y me percat\u00e9 de que varias tablas no fueron importadas. El mensaje que arrojaba el manejador es \u00abTable storage engine for &#8216;nombre_tabla&#8217; doesn&#8217;t have this option\u00bb, el cual no proporciona ninguna soluci\u00f3n o la causa que origin\u00f3 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[54],"tags":[178,179,181,180,177],"_links":{"self":[{"href":"https:\/\/gregorgonzalez.com.ve\/blog\/wp-json\/wp\/v2\/posts\/456"}],"collection":[{"href":"https:\/\/gregorgonzalez.com.ve\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gregorgonzalez.com.ve\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gregorgonzalez.com.ve\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gregorgonzalez.com.ve\/blog\/wp-json\/wp\/v2\/comments?post=456"}],"version-history":[{"count":0,"href":"https:\/\/gregorgonzalez.com.ve\/blog\/wp-json\/wp\/v2\/posts\/456\/revisions"}],"wp:attachment":[{"href":"https:\/\/gregorgonzalez.com.ve\/blog\/wp-json\/wp\/v2\/media?parent=456"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gregorgonzalez.com.ve\/blog\/wp-json\/wp\/v2\/categories?post=456"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gregorgonzalez.com.ve\/blog\/wp-json\/wp\/v2\/tags?post=456"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}