Author: pd221994
Date: 2011-04-20 19:56:51 +0200 (Wed, 20 Apr 2011)
New Revision: 25948
Log:
r47262@dhcp-adc-twvpn-1-vpnpool-10-154-14-31: paul | 2011-04-20 12:54:13 -0500
Document bug fixes:
BUG 11755431 - 47205: MAP 'REPAIR TABLE' TO RECREATE +ANALYZE FOR ENGINES NOT SUPPORTING NATIVE
Also add workaround note to 5.1 upgrading section how to cope with failure
of mysql_upgrade to repair InnoDB tables.
Modified:
svk:merge
trunk/dynamic-docs/changelog/mysqld-2.xml
trunk/refman-5.1/installing-updowngrade.xml
trunk/refman-5.5/sql-syntax-data-definition.xml
trunk/refman-5.6/sql-syntax-data-definition.xml
Property changes on: trunk
___________________________________________________________________
Modified: svk:merge
===================================================================
Changed blocks: 0, Lines Added: 0, Lines Deleted: 0; 1277 bytes
Modified: trunk/dynamic-docs/changelog/mysqld-2.xml
===================================================================
--- trunk/dynamic-docs/changelog/mysqld-2.xml 2011-04-20 17:56:43 UTC (rev 25947)
+++ trunk/dynamic-docs/changelog/mysqld-2.xml 2011-04-20 17:56:51 UTC (rev 25948)
Changed blocks: 1, Lines Added: 110, Lines Deleted: 0; 3947 bytes
@@ -44403,4 +44403,114 @@
</logentry>
+ <logentry entrytype="bug">
+
+ <tags>
+ <manual type="mysqlcheck"/>
+ <manual type="mysql_upgrade"/>
+ <manual type="CHECK TABLE"/>
+ <manual type="ALTER TABLE"/>
+ </tags>
+
+ <bugs>
+ <fixes bugid="47205"/>
+ <fixes bugid="11755431"/>
+ </bugs>
+
+ <versions>
+ <version ver="5.5.11"/>
+ <version ver="5.6.3"/>
+ </versions>
+
+ <message>
+
+ <para>
+ When used to upgrade tables, <command>mysqlcheck</command> (and
+ <command>mysql_upgrade</command>, which invokes
+ <command>mysqlcheck</command>) did not upgrade some tables for
+ which table repair was found to be necessary. In particular, it
+ failed to upgrade <literal role="se">InnoDB</literal> tables
+ that needed repair, leaving them in a nonupgraded state. This
+ occurred because:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <command>mysqlcheck --check-upgrade ---auto-repair</command>
+ checks for tables that are incompatible with the current
+ version of MySQL. It does this by issuing the
+ <literal role="stmt" condition="check-table">CHECK TABLE ...
+ FOR UPGRADE</literal> statement and examining the result.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ For any table found to be incompatible,
+ <command>mysqlcheck</command> issues a
+ <literal role="stmt">REPAIR TABLE</literal> statement. But
+ this fails for storage engines such as
+ <literal role="se">InnoDB</literal> that do not support the
+ repair operation. Consequently, the table remains unchanged.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>
+ To fix the problem, the following changes were made to
+ <literal role="stmt" condition="check-table">CHECK TABLE ... FOR
+ UPGRADE</literal> and <command>mysqlcheck</command>. Because
+ <command>mysql_upgrade</command> invokes
+ <command>mysqlcheck</command>, these changes also fix the
+ problem for <command>mysql_upgrade</command>.
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ <literal role="stmt" condition="check-table">CHECK TABLE ...
+ FOR UPGRADE</literal> returns a different error if a table
+ needs repair but its storage engine does not support
+ <literal role="stmt">REPAIR TABLE</literal>:
+ </para>
+ <para>
+ Previous:
+ </para>
+ <para>
+<programlisting>
+Error: <literal>ER_TABLE_NEEDS_UPGRADE</literal>
+Table upgrade required. Please do "REPAIR TABLE `<replaceable>tbl_name</replaceable>`" or
+dump/reload to fix it!
+</programlisting>
+ Now:
+ </para>
+<programlisting>
+Error: <literal>ER_TABLE_NEEDS_REBUILD</literal>
+Table rebuild required. Please do "ALTER TABLE `<replaceable>tbl_name</replaceable>` FORCE" or
+dump/reload to fix it!
+</programlisting>
+ </listitem>
+
+ <listitem>
+ <para>
+ <command>mysqlcheck</command> recognizes the new error and
+ issues an <literal role="stmt" condition="alter-table">ALTER
+ TABLE ... FORCE</literal> statement. The
+ <literal>FORCE</literal> option for
+ <literal role="stmt">ALTER TABLE</literal> was recognized
+ but did nothing; now it is implemented and acts as a
+ <quote>null</quote> alter operation that rebuilds the table.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </message>
+
+ </logentry>
+
</changelog>
Modified: trunk/refman-5.1/installing-updowngrade.xml
===================================================================
--- trunk/refman-5.1/installing-updowngrade.xml 2011-04-20 17:56:43 UTC (rev 25947)
+++ trunk/refman-5.1/installing-updowngrade.xml 2011-04-20 17:56:51 UTC (rev 25948)
Changed blocks: 1, Lines Added: 22, Lines Deleted: 0; 1513 bytes
@@ -455,6 +455,28 @@
<listitem>
<para>
+ <emphasis role="bold">Known issue</emphasis>:
+ <command>mysql_upgrade</command> attempts to to upgrade
+ tables that are incompatible with the current version of
+ MySQL. (It invokes <command>mysqlcheck</command> to check
+ tables and, if necessary, repair them.) However this can
+ fail for storage engines that do not support
+ <replaceable role="stmt">REPAIR TABLE</replaceable>, such as
+ <literal role="se">InnoDB</literal>, and leave tables in a
+ nonupgradable state.
+ </para>
+
+ <para>
+ To work around this problem, use
+ <literal role="stmt" condition="alter-table">ALTER TABLE
+ <replaceable>tbl_name</replaceable> ENGINE=InnoDB</literal>
+ to perform a <quote>null</quote> alter operation that
+ rebuilds the table.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
<emphasis role="bold">Known issue</emphasis>: After a binary
upgrade to MySQL 5.1 from a MySQL 5.0 installation that
contains <literal role="se">ARCHIVE</literal> tables:
Modified: trunk/refman-5.5/sql-syntax-data-definition.xml
===================================================================
--- trunk/refman-5.5/sql-syntax-data-definition.xml 2011-04-20 17:56:43 UTC (rev 25947)
+++ trunk/refman-5.5/sql-syntax-data-definition.xml 2011-04-20 17:56:51 UTC (rev 25948)
Changed blocks: 1, Lines Added: 9, Lines Deleted: 0; 844 bytes
@@ -786,6 +786,15 @@
</para>
<para>
+ As of MySQL 5.5.11, you can also use
+ <literal role="stmt" condition="alter-table">ALTER TABLE
+ <replaceable>tbl_name</replaceable> FORCE</literal> to perform a
+ <quote>null</quote> alter operation that rebuilds the table.
+ Previously the <literal>FORCE</literal> option was recognized but
+ ignored.
+ </para>
+
+ <para>
For information on troubleshooting <literal role="stmt">ALTER
TABLE</literal>, see <xref linkend="alter-table-problems"/>.
</para>
Modified: trunk/refman-5.6/sql-syntax-data-definition.xml
===================================================================
--- trunk/refman-5.6/sql-syntax-data-definition.xml 2011-04-20 17:56:43 UTC (rev 25947)
+++ trunk/refman-5.6/sql-syntax-data-definition.xml 2011-04-20 17:56:51 UTC (rev 25948)
Changed blocks: 1, Lines Added: 9, Lines Deleted: 0; 843 bytes
@@ -787,6 +787,15 @@
</para>
<para>
+ As of MySQL 5.6.3, you can also use
+ <literal role="stmt" condition="alter-table">ALTER TABLE
+ <replaceable>tbl_name</replaceable> FORCE</literal> to perform a
+ <quote>null</quote> alter operation that rebuilds the table.
+ Previously the <literal>FORCE</literal> option was recognized but
+ ignored.
+ </para>
+
+ <para>
For information on troubleshooting <literal role="stmt">ALTER
TABLE</literal>, see <xref linkend="alter-table-problems"/>.
</para>
| Thread |
|---|
| • svn commit - mysqldoc@oter02: r25948 - in trunk: . dynamic-docs/changelog refman-5.1 refman-5.5 refman-5.6 | paul.dubois | 20 Apr |