MySQL无法打开情况下读取frm文件的表结构

server/2024/9/25 9:08:16/

一、背景:

        开发人员通过MySQL客户端工具,可以访问MySQL5.7.6,可以访问具体的DB,可以查看小写表的数据,但是无法查看大写表的数据,报错信息为“table does not exist”。

二、检查与分析:

        ssh登录MySQL数据库Linux主机,使用命令行工具,本地访问MySQL,也出现“table does not exist”问题,检查数据库参数lower_case_table_names=1

        检查MySQL官方文档,查看参数描述与默认值等信息。

Command-Line Format--lower-case-table-names[=#]
System Variablelower_case_table_names
ScopeGlobal
DynamicNo
TypeInteger
Default Value (macOS)2
Default Value (Unix)0
Default Value (Windows)1
Minimum Value0
Maximum Value2

If set to 0, table names are stored as specified and comparisons are case-sensitive. If set to 1, table names are stored in lowercase on disk and comparisons are not case-sensitive.If set to 2, table names are stored as given but compared in lowercase. This option also applies to database names and table aliases. For additional details, see Section 9.2.3, “Identifier Case Sensitivity”.

        发现lower_case_table_names参数被修改,数据库只能识别小写,所以开发人员的大写表does not exist,但是表结构依然存在于MySQL中。

三、解决办法:

        解决方法1:表结构替换

       1)在异机上新建库、新建表,创建相同名称的大表,字段数量没有限制,可以只有一个字段id

                create table TTT1(id int primary key);

        2)将问题库中的TTT1.frm文件替换异机上新建的TTT1.frm文件。

        3)重启MySQL服务。

        4)查看表结构show create table TTT1

        5)如果提示表的字段数据不一致,则考虑创建相同字段数量的表TTT1

        6)可能需要设置innodb_force_recovery=6并重启mysql

        解决方法2:使用mysql utilities工具解析frm文件

        1)下载并安装mysql utilities

        2)可能还需要下载并安装mysql-connector-python

        3)在Linux主机上安装以上两个rpm包

                rpm -ivh mysql-utilities-1.6.5-1.el7.noarch.rpm mysql-connector-python-2.1.7-1.el7.x86_64.rpm

        4)查看mysql-utilities工具包

                rpm -qa|grep mysql-utilities

                rpm -ql mysql-utilities-1.6.5-1.el7.noarch

                which mysqlfrm

                确认mysqlfrm工具已安装

        5)mysqlfrm使用帮助

                man mysqlfrm

                mysqlfrm --help

四、具体操作:

        frm文件解析,可以使用--diagnostic参数

        mysqlfrm --diagnostic TTT1.frm

五、结论:

        如果只需要表结构,则可以考虑使用mysql utilities工具提供的mysqlfrm解析frm文件。

        如果需要数据,则考虑将数据库参数lower_case_table_names修改为默认值。原则上,MySQL创建完成后,不允许修改lower_case_table_names参数值。

        


http://www.ppmy.cn/server/20238.html

相关文章

测试下目录显示否

目录 1、安装docker 2、搜索镜像 3、拉取镜像 4、查看镜像列表 5、运行镜像 6、查看运行容器列表 8、命令行连接数据库 1、安装docker 2、搜索镜像 docker search mysql 3、拉取镜像 docker pull mysql 4、查看镜像列表 docker images 5、运行镜像 docker run -p …

微前端实现原理详解——以Single-Spa为例

Single-Spa是一个用于微前端架构的JavaScript框架。它允许在一个应用程序中同时加载多个前端框架,例如React、Angular、Vue等。以下是Single-Spa的核心架构解析: 核心思想:Single-Spa的核心思想是将前端应用程序拆分为多个小应用,…

AI预测体彩排列3第2套算法实战化测试第5弹2024年4月27日第5次测试

今天继续进行新算法的测试,今天是第5次测试。好了,废话不多说了,直接上图上结果。 2024年4月27日体彩排3预测结果 6码定位方案如下: 百位:6、2、1、7、8、9 十位:8、9、4、3、1、0 个位:3、7、8…

计算机网络【CN】Ch3 数据链路层

目录 数据链路层的功能 【※】VLAN 三种划分VLAN的方法: 【※】MAC帧格式 【※】三种可靠传输机制 ​编辑 【※】介质访问控制 信道划分介质访问控制 随机介质访问控制 CSMA CSMA/CD【有线】 CSMA/CA【无线】 信道利用率技巧 循环冗余校验CRC 以太网[802.3] 以太网…

Spring(SSM框架)

目录 一、核心体系 二、IOC和AOP 1.控制反转(IoC) 2.面向切面编程(AOP) 三、整合持久层 1. JDBC模板(JdbcTemplate) 2. JPA与Hibernate 3. MyBatis 4. 事务管理 5. 数据源配置 6. 整合其他ORM框…

接收区块链的CCF会议--SAGT 2024 截止5.21 附录用率

会议名称:SAGT CCF等级:CCF C类会议 类别:交叉/综合/新兴 录用率:2023年录用率44%(26/59) Scope Foundational work is solicited on topics including but not limited to: Solution Concepts in Game…

Fork for Mac v2.42 激活版 Git客户端

Fork for Mac是一款运行在Mac平台上的Git客户端,Fork Mac版具备基本的取、推、提交、修改、创建和删除分支和标签、创建和删除远程备份等功能,还有实用的差异查看器,你可以通过清晰的视图快速发现源代码中的更改。 Fork for Mac v2.42 激活版…

在 GitHub 中掌握键盘快捷键的简短指南

你是否知道 GitHub 几乎每页都有键盘快捷键?这篇文章将带你探索 GitHub 的键盘快捷键世界,以及它们如何帮助你快速导航和执行操作。 读完这篇,你将能够: 掌握快捷键:想知道如何访问这些快捷键?在任何 Git…