{"id":99,"date":"2012-10-22T16:18:07","date_gmt":"2012-10-22T14:18:07","guid":{"rendered":"http:\/\/www.tenzione.it\/?p=99"},"modified":"2012-10-22T16:18:37","modified_gmt":"2012-10-22T14:18:37","slug":"mysql-conversione-a-innodb","status":"publish","type":"post","link":"https:\/\/www.tenzione.it\/?p=99","title":{"rendered":"mysql, conversione a InnoDB"},"content":{"rendered":"<p>La premessa doverosa \u00e8 che, trattandosi di mysql, in generale, non funzionar\u00e0[1]. Ma pu\u00f2 essere un punto di partenza, poi sta ai solutori pi\u00f9 che abili, risolvere i problemini che Mysql potrebbe[2] presentare.<\/p>\n<p>In generale, la conversione di un db da MyISAM a InnoDB non \u00e8 altro che una serie di alter table &lt;nome della tabella&gt; engine=InnoDB;.<\/p>\n<p>E&#8217; altrettanto vero che di solito, \u00e8 scomodo digitare ogni singola alter a mano.<\/p>\n<p>Da qui si procede quindi con due metodi: manipolazione del dump, o scripting ad hoc.<\/p>\n<p>La manipolazione del dump \u00e8 triviale (create un dump, usate il vostro editor preferito per sostituire engine=MyISAM con engine=InnoDB, droppate il db e ricaricate), quindi ci concentriamo sul secondo metodo.<\/p>\n<p>&#8211; generare una sequenza di alter a partire dall&#8217;sql:<br \/>\n<code><br \/>\necho \"select concat('ALTER TABLE `',TABLE_NAME,'` ENGINE=InnoDB;')\u00a0FROM Information_schema.TABLES\u00a0WHERE ENGINE != 'InnoDB' AND TABLE_TYPE='BASE TABLE'\u00a0AND TABLE_SCHEMA='&lt;nome del database&gt;'\" | mysql \u00a0| tail -n +2 &gt; convert.sql<br \/>\n<\/code><br \/>\nOvviamente dovete sostituire &lt;nome del database&gt; con il nome vero e proprio.<\/p>\n<p>Attenzione ai nomi che sono effettivamente maiuscoli (sic), il tail -n +2 \u00e8 solo un trick per eliminare la prima riga che non \u00e8 sql. Se dovete dare utente e pass e\/o db il posto gi\u00f9 \u00e8 dopo &#8220;mysql&#8221;.<\/p>\n<p>A questo punto, non dovete fare altro che eseguire il vostro sql appena creato da &#8220;dentro&#8221; il db con un \\. convert.sql oppure con il comando<br \/>\n<code><br \/>\nmysql &lt;nome del database&gt; &lt; convert.sql<br \/>\n<\/code><\/p>\n<p>[1]<\/p>\n<p>Essenzialmente perch\u00e8 mysql \u00e8 un bocchino. Si, ho scritto bocchino.<\/p>\n<p>[2]<\/p>\n<p>A me ha trovato una tabella che NON C&#8217;ERA, ha tentato di convertirmi una vista con risultati NON. Insomma, il solito mysql.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La premessa doverosa \u00e8 che, trattandosi di mysql, in generale, non funzionar\u00e0[1]. Ma pu\u00f2 essere un punto di partenza, poi sta ai solutori pi\u00f9 che abili, risolvere i problemini che Mysql potrebbe[2] presentare. In generale, la conversione di un db da MyISAM a InnoDB non \u00e8 altro che una serie di alter table &lt;nome della [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,9,11],"tags":[23,96,21,95,94,93,22],"class_list":["post-99","post","type-post","status-publish","format-standard","hentry","category-tensioni","category-trucchi","category-tubuntu","tag-console","tag-conversioni","tag-debian","tag-innodb","tag-myisam","tag-mysql","tag-ubuntu"],"_links":{"self":[{"href":"https:\/\/www.tenzione.it\/index.php?rest_route=\/wp\/v2\/posts\/99","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tenzione.it\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tenzione.it\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tenzione.it\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tenzione.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=99"}],"version-history":[{"count":2,"href":"https:\/\/www.tenzione.it\/index.php?rest_route=\/wp\/v2\/posts\/99\/revisions"}],"predecessor-version":[{"id":101,"href":"https:\/\/www.tenzione.it\/index.php?rest_route=\/wp\/v2\/posts\/99\/revisions\/101"}],"wp:attachment":[{"href":"https:\/\/www.tenzione.it\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=99"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tenzione.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=99"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tenzione.it\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=99"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}