折雨的天空

新浪微薄腾讯微薄

最新碎语:最近霉到了住。哎。。。

您的位置:折雨的天空 >其他技术> 再记从MySQL5.5升级至8.0.19的问题,Failed to find valid data directory.

再记从MySQL5.5升级至8.0.19的问题,Failed to find valid data directory.

继上一篇文章后,安装MySQL8.0.19没有问题了,成功启动了,但是。。。

但是转移原来5.5的数据的时候出现了问题,网上找了个脚本PHP的,

原文地址:

https://blog.csdn.net/wtm_mac/article/details/84120804

把文件改了改,毕竟现在都PHP7.4了,上面地址的肯定跑不起了的,改成了mysqli扩展的,下面会发布。

把原来5.5的所有库和表转换成了innodb类型的了。


但是。。就在这转换过后,MySQL5.5启动不了了,我的数据啊,我就以为就这样掉了。。。


经过很久的折腾,找到命令:



mysqld --console

查看日志,



Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (0): Connection ID (thread ID): 0
Status: NOT_KILLED

搜索后无果,期间手贱还删除了一个文件夹,很多个-relay-bin.0000**的文件。。


以为所有数据都要丢掉的时候,突然来了转机。

原文地址:


https://blog.csdn.net/xingnang2008/article/details/82503319


文章有提及重命名:ib_logfile0、ib_logfile1,于是死马当活马医,结果还是不行,失望至极。


突然灵光一现,这个灵光应该值5元吧。



##此部分内容需要付费后,才可查看##


好吧,支持,蜿蜒曲折的升级之路就完成了。最后,把改良的PHP批量修改表引擎的代码共享出来,谨慎使用,操作前,记得备份数据啊。别像我,还好我是本地。


备份数据文章地址:

https://blog.csdn.net/weixin_38570967/article/details/86505559

导出:


mysqldump --single-transaction -u root -p --all-databases> alldb.sql

导入:




mysql -u root -p < alldb.sql

当然,我不是这么导入的。我还是用nav一个一个的同步算了,虽然,被Nav坑了不止一次。



最后是PHP代码:



<?php
/**
 *
 * 文件说明: 转换MySQL表引擎
 *
 * Created by PhpStorm.
 * User: qs9515
 * Date: 2020/4/4
 * Time: 12:25
 *
 * $Id$
 * $LastChangedDate$
 * $LastChangedRevision$
 * $LastChangedBy$
 */
error_reporting(E_ALL);
set_time_limit(0);
// 数据库连接配置
$host = 'localhost';
$username = 'root';
$passwd = '****';

// 转换配置
$convert_rule = array(
    'from' => 'MyISAM',
    'to' => 'InnoDB'
);
ob_end_clean();
ob_implicit_flush(1);
mysql_engine_convert();

/**
 * 转换函数
 */
function mysql_engine_convert()
{
    global $host, $username, $passwd, $configs, $convert_rule;
    if (($conn = mysqli_connect($host, $username, $passwd)) !== false) {
        $configs=mysqli_query($conn,"show databases");
        while ($table=mysqli_fetch_row($configs))
        {
            $db_name=isset($table[0])?$table[0]:'';
            echo '开始处理数据库:【'.$db_name.'】<hr />';
            if ($db_name=='' || in_array($db_name,array('mysql','performance_schema','test')))
            {
                continue;
            }
            mysqli_select_db($conn,$db_name) or exit('Not found db: ' . $db_name);
            $tables = mysqli_query($conn,"SHOW FULL TABLES");
            while ($table = mysqli_fetch_row($tables)) {
                if ($table[1] === 'VIEW') continue;

                $sql = "SHOW TABLE STATUS from {$db_name} where Name='{$table[0]}' ";
                if ($result = mysqli_query($conn,$sql)) {
                    $table_status = mysqli_fetch_row($result);

                    if (strtolower($table_status[1]) == strtolower($convert_rule['from']))
                    {
                        echo '开始处理数据库:【'.$db_name.'】的数据表【'.$table[0].'】<hr />';
                        mysqli_query($conn,"ALTER TABLE {$table[0]} ENGINE = {$convert_rule['to']}");
                        echo '处理数据库:【'.$db_name.'】的数据表【'.$table[0].'】完成!!!<hr />';
                    }

                }
            }
            echo $db_name, ':All tables ENGINE is ', $convert_rule['to'], "\n";
        }

    } else {
        echo "db error\n";
    }

}





------------正 文 已 结 束, 感 谢 您 的 阅 读 (折雨的天空)--------------------

转载请注明本文标题和链接:《再记从MySQL5.5升级至8.0.19的问题,Failed to find valid data directory.

奖励一下

取消

您的认可,是我写博客的动力,谢谢您!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论

路人甲 表情
看不清楚?点图切换