check and upgrade MySQL tables
add an example, a script, a trick and tips
mysql_upgrade returned non-zero exit status, checking if
upgrade has already been performed"
examines all tables in all databases for incompatibilities
with the current version of MySQL Server.
mysql_upgrade also upgrades the system tables so that
you can take advantage of new privileges or capabilities
that might have been added.
should be executed each time you upgrade MySQL.
mysql_upgrade finds that a table has a possible
incompatibility, it performs a table check and, if problems
are found, attempts a table repair. If the table cannot be
repaired, see Section 2.12.4, “Rebuilding or
Repairing Tables or Indexes” for manual table repair
On Windows Server 2008, Vista, and newer, you must run
mysql_upgrade with administrator privileges. You can
do this by running a Command Prompt as Administrator and
running the command. Failure to do so may result in the
upgrade failing to execute correctly.
You should always back up your current MySQL installation
before performing an upgrade. See Section 7.2,
“Database Backup Methods”.
incompatibilities may require special handling before you
upgrade your MySQL installation and run
mysql_upgrade. See Section 2.12.1,
“Upgrading MySQL”, for instructions on
determining whether any such incompatibilities apply to your
installation and how to handle them.
mysql_upgrade, make sure that the server is running,
and then invoke it like this:
mysql_upgrade, stop the server and restart it so that
any changes made to the system tables take effect.
executes the following commands to check and repair tables
and to upgrade the system tables:
mysql < fix_priv_tables
Notes about the
mysql_upgrade invokes mysqlcheck with the
--all-databases option, it
processes all tables in all databases, which might take a
long time to complete. Each table is locked and therefore
unavailable to other sessions while it is being processed.
Check and repair operations can be time-consuming,
particularly for large tables.
details about what checks the
--check-upgrade option entails, see
the description of the FOR UPGRADE option of the CHECK TABLE
statement (see Section 18.104.22.168, “CHECK TABLE
fix_priv_tables represents a script generated
internally by mysql_upgrade that contains SQL
statements to upgrade the tables in the mysql database.
All checked and
repaired tables are marked with the current MySQL version
number. This ensures that next time you run
mysql_upgrade with the same version of the server, it
can tell whether there is any need to check or repair the
also saves the MySQL version number in a file named
mysql_upgrade_info in the data directory. This is used to
quickly check whether all tables have been checked for this
release so that table-checking can be skipped. To
ignore this file and perform the check regardless, use the
If you install
MySQL from RPM packages on Linux, you must install the
server and client RPMs. mysql_upgrade is included in
the server RPM but requires the client RPM because the
latter includes mysqlcheck. (See Section 2.5.1,
“Installing MySQL from RPM Packages on
does not upgrade the contents of the help tables. For
upgrade instructions, see Section 5.1.10,
supports the following options, which can be specified on
the command line or in the [mysql_upgrade] and [client]
groups of an option file. Other options are passed to
mysqlcheck. For example, it might be necessary to
option. mysql_upgrade also supports the options for
processing option files described at Section 22.214.171.124,
“Command-Line Options that Affect Option-File
Display a short
help message and exit.
The path to the
MySQL installation directory. This option is accepted for
backward compatibility but ignored.
The path to the
data directory. This option is accepted for backward
compatibility but ignored.
debugging information when the program exits.
information and memory and CPU usage statistics when the
client-side authentication plugin to use. See
Section 6.3.6, “Pluggable
This option was
added in MySQL 5.5.10.
mysql_upgrade_info file and force execution of
mysqlcheck even if mysql_upgrade has already
been executed for the current version of MySQL.
in which to look for plugins. It may be necessary to specify
this option if the --default-auth
option is used to specify an authentication plugin but
mysql_upgrade does not find it. See
Section 6.3.6, “Pluggable
This option was
added in MySQL 5.5.10.
The path name
of the directory to use for creating temporary files.
the system tables, do not upgrade data.
The MySQL user
name to use when connecting to the server. The default user
name is root.
Print more information about what the program does.
version of the server to which mysql_upgrade is
connecting to verify that it is the same as the version for
which mysql_upgrade was built. If not,
mysql_upgrade exits. This option is enabled by
default; to disable the check, use
option was added in MySQL 5.5.32.
logging to be enabled while mysql_upgrade runs. This
is the default behavior; to disable binary logging during
the upgrade, use the inverse of this option (that is, start
the program with
Copyright © 1997, 2013, Oracle and/or its affiliates. All
This software and related documentation are provided under a
license agreement containing restrictions on use and disclosure
and are protected by intellectual property laws. Except as
expressly permitted in your license agreement or allowed by law,
you may not use, copy, reproduce, translate, broadcast, modify,
license, transmit, distribute, exhibit, perform, publish, or
display any part, in any form, or by any means. Reverse
engineering, disassembly, or decompilation of this software,
unless required by law for interoperability, is prohibited.
The information contained herein is subject to change without
notice and is not warranted to be error-free. If you find any
errors, please report them to us in writing.
If this software or related documentation is delivered to the
U.S. Government or anyone licensing it on behalf of the U.S.
Government, the following notice is applicable:
U.S. GOVERNMENT RIGHTS Programs, software, databases, and related
documentation and technical data delivered to U.S. Government
customers are "commercial computer software" or "commercial
technical data" pursuant to the applicable Federal Acquisition
Regulation and agency-specific supplemental regulations. As such,
the use, duplication, disclosure, modification, and adaptation
shall be subject to the restrictions and license terms set forth
in the applicable Government contract, and, to the extent
applicable by the terms of the Government contract, the
additional rights set forth in FAR 52.227-19, Commercial Computer
Software License (December 2007). Oracle USA, Inc., 500 Oracle
Parkway, Redwood City, CA 94065.
This software is developed for general use in a variety of
information management applications. It is not developed or
intended for use in any inherently dangerous applications,
including applications which may create a risk of personal
injury. If you use this software in dangerous applications, then
you shall be responsible to take all appropriate fail-safe,
backup, redundancy, and other measures to ensure the safe use of
this software. Oracle Corporation and its affiliates disclaim any
liability for any damages caused by use of this software in
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. MySQL is a trademark of Oracle Corporation and/or its
affiliates, and shall not be used without Oracle’s express
written authorization. Other names may be trademarks of their
This software and documentation may provide access to or
information on content, products, and services from third
parties. Oracle Corporation and its affiliates are not
responsible for and expressly disclaim all warranties of any kind
with respect to third-party content, products, and services.
Oracle Corporation and its affiliates will not be responsible for
any loss, costs, or damages incurred due to your access to or use
of third-party content, products, or services.
This document in any form, software or printed matter, contains
proprietary information that is the exclusive property of Oracle.
Your access to and use of this material is subject to the terms
and conditions of your Oracle Software License and Service
Agreement, which has been executed and with which you agree to
comply. This document and information contained herein may not be
disclosed, copied, reproduced, or distributed to anyone outside
Oracle without prior written consent of Oracle or as specifically
provided below. This document is not part of your license
agreement nor can it be incorporated into any contractual
agreement with Oracle or its subsidiaries or affiliates.
This documentation is NOT distributed under a GPL license. Use of
this documentation is subject to the following terms:
You may create a printed copy of this documentation solely for
your own personal use. Conversion to other formats is allowed as
long as the actual content is not altered or edited in any way.
You shall not publish or distribute this documentation in any
form or on any media, except if you distribute the documentation
in a manner similar to how Oracle disseminates it (that is,
electronically for download on a Web site with the software) or
on a CD-ROM or similar medium, provided however that the
documentation is disseminated together with the software on the
same medium. Any other use, such as any dissemination of printed
copies or use of this documentation, in whole or in part, in
another publication, requires the prior written consent from an
authorized representative of Oracle. Oracle and/or its affiliates
reserve any and all rights to this documentation not expressly
For more information on the terms of this license, or for details
on how the MySQL documentation is built and produced, please
visit MySQL Contact &
For additional licensing information,
including licenses for third-party libraries used by MySQL
products, see Preface and Legal Notices.
For help with using MySQL, please visit
either the MySQL
Forums or MySQL Mailing Lists where you can discuss your issues with other MySQL
For additional documentation on MySQL
products, including translations of the documentation into other
languages, and downloadable versions in variety of formats,
including HTML and PDF formats, see the MySQL Documentation Library.
more information, please refer to the MySQL Reference
Manual, which may already be installed locally and which is
also available online at