<div id="docs-body">
 <div class="section">
  <div class="titlepage">
   <div>
    <div>
     <h2 class="title">
      <a name="upgrade-troubleshooting">
      </a>
      3.13 Upgrade Troubleshooting
     </h2>
    </div>
   </div>
  </div>
  <div class="itemizedlist">
   <ul class="itemizedlist" style="list-style-type: disc; ">
    <li class="listitem">
     <p>
      A schema mismatch in a MySQL 8.3 instance
          between the
      <code class="filename">
       .frm
      </code>
      file of a table and the
      <code class="literal">
       InnoDB
      </code>
      data dictionary can cause an upgrade
          to MySQL 8.4 to fail. Such mismatches may be due
          to
      <code class="filename">
       .frm
      </code>
      file corruption. To address this
          issue, dump and restore affected tables before attempting the
          upgrade again.
     </p>
    </li>
    <li class="listitem">
     <p>
      If problems occur, such as that the new
      <a class="link" href="mysqld.html" title="6.3.1 mysqld — The MySQL Server">
       <span class="command">
        <strong>
         mysqld
        </strong>
       </span>
      </a>
      server does not start, verify that
          you do not have an old
      <code class="filename">
       my.cnf
      </code>
      file from
          your previous installation. You can check this with the
      <a class="link" href="option-file-options.html#option_general_print-defaults">
       <code class="option">
        --print-defaults
       </code>
      </a>
      option (for
          example,
      <a class="link" href="mysqld.html" title="6.3.1 mysqld — The MySQL Server">
       <span class="command">
        <strong>
         mysqld --print-defaults
        </strong>
       </span>
      </a>
      ). If this
          command displays anything other than the program name, you
          have an active
      <code class="filename">
       my.cnf
      </code>
      file that affects
          server or client operation.
     </p>
    </li>
    <li class="listitem">
     <p>
      If, after an upgrade, you experience problems with compiled
          client programs, such as
      <code class="literal">
       Commands out of
          sync
      </code>
      or unexpected core dumps, you probably have
          used old header or library files when compiling your programs.
          In this case, check the date for your
      <code class="filename">
       mysql.h
      </code>
      file and
      <code class="filename">
       libmysqlclient.a
      </code>
      library to verify that
          they are from the new MySQL distribution. If not, recompile
          your programs with the new headers and libraries.
          Recompilation might also be necessary for programs compiled
          against the shared client library if the library major version
          number has changed (for example, from
      <code class="filename">
       libmysqlclient.so.20
      </code>
      to
      <code class="filename">
       libmysqlclient.so.21
      </code>
      ).
     </p>
    </li>
    <li class="listitem">
     <p>
      If you have created a loadable function with a given name and
          upgrade MySQL to a version that implements a new built-in
          function with the same name, the loadable function becomes
          inaccessible. To correct this, use
      <a class="link" href="drop-function.html" title="15.1.26 DROP FUNCTION Statement">
       <code class="literal">
        DROP
          FUNCTION
       </code>
      </a>
      to drop the loadable function, and then use
      <a class="link" href="create-function.html" title="15.1.14 CREATE FUNCTION Statement">
       <code class="literal">
        CREATE FUNCTION
       </code>
      </a>
      to re-create
          the loadable function with a different nonconflicting name.
          The same is true if the new version of MySQL implements a
          built-in function with the same name as an existing stored
          function. See
      <a class="xref" href="function-resolution.html" title="11.2.5 Function Name Parsing and Resolution">
       Section 11.2.5, “Function Name Parsing and Resolution”
      </a>
      , for the
          rules describing how the server interprets references to
          different kinds of functions.
     </p>
    </li>
    <li class="listitem">
     <p>
      If upgrade to MySQL 8.4 fails due to any of the
          issues outlined in
      <a class="xref" href="upgrade-prerequisites.html" title="3.6 Preparing Your Installation for Upgrade">
       Section 3.6, “Preparing Your Installation for Upgrade”
      </a>
      ,
          the server reverts all changes to the data directory. In this
          case, remove all redo log files and restart the MySQL
          8.3 server on the existing data directory to
          address the errors. The redo log files
          (
      <code class="filename">
       ib_logfile*
      </code>
      ) reside in the MySQL data
          directory by default. After the errors are fixed, perform a
          slow shutdown (by setting
      <a class="link" href="innodb-parameters.html#sysvar_innodb_fast_shutdown">
       <code class="literal">
        innodb_fast_shutdown=0
       </code>
      </a>
      )
          before attempting the upgrade again.
     </p>
    </li>
   </ul>
  </div>
 </div>
 <br/>
</div>
