故障分析 | 库表名-大小写不规范,运维两行泪

南瑞61850系统解析:从IEC标准到智能变电站工程实践 IEC 61850是变电站自动化通信领域的核心国际标准,它定义了一套统一的通信服务模型与数据模型,旨在解决电力二次设备间的互操作难题。其核心原理在于通过标准化的“三层两网”架构、面向对象的建模方法以及制造报文规范(MMS)、GOOSE、采样值(SV)等通信服务,实现站控层、间隔层与过程层设备间高效、可靠的数据交互。该标准的技术价值在于大幅提升了智能变电站的设计、调试与运维效率,降低了系统集成与长期维护成本。其典型应用场景涵盖变电站监控、保护控制、故障录波分析及设备状态监测等。本文以南瑞61850系统为具体实 阅读详情

作者:刘聪

爱可生华东交付服务部 DBA 成员,专职 MySQL 故障处理及相关技术支持。座右铭:好好学习,天天向上。

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


一、问题描述

客户需要做一套库的迁移,因为库的数据量不大,40G左右,并且需要到远程机器上去做全量恢复。所以第一时间想到的自然是 mysqldump 工具来做。但是没想到会发生这种“惨案”。

mysqldump 备份失败,报错表不存在。

检查 MySQL 客户端去查看表信息以及表的物理文件包括环境信息(是否严格区分大小写),整理的现象如下:

  • mysqldump 报错:table doesn’t exist;
  • show tables 观察:db 存在,报错的 table 也存在;
  • select 查看表数据:报错 table doesn’t exist ;
  • 观察物理文件:db.opt 文件不存在;报错的 table,idb 文件不存在,仅有 frm 文件;
  • 查看 mysql-error.log :有 DROP database 的提示,且记录了报错 table 的 frm 文件 was lost ;
  • MySQL 环境信息:lower_case_table_names = 1 。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2qNrs3Sf-1673846371507)(https://action-weikai.oss-cn-shanghai.aliyuncs.com/liucong13-2图.png)]

二、分析诊断

首先,我们看一下 MySQL 官网提供的信息(官网链接:https://dev.mysql.com/doc/refman/5.7/en/identifier-case-sensitivity.html)。

根据下面截图信息可以确定 Unix 平台上,lower_case_table_names 默认 = 0 ,是大小写敏感的。

从 mysqldump 报错所提示的表名中包含了大写,不难推断出:是在 lower_case_table_names = 0 条件下,创建了该表,所以表名和物理文件名也都包含大写。而当前的 MySQL 环境是 lower_case_table_names = 1(也就是不论 sql 中是否明确了表名的大小写,均按小写去匹配),可以确定此环境变量有做过变更。

结合 mysql-error.log 的报错信息提示,可能有 DROP database 动作执行过。且数据库目录中的 db.opt 文件缺失这点,更加增强了 DROP database 的可能性。

那么,我们不妨做出如下猜想:

在 lower_case_table_names = 1 环境下,下发了 DROP database 操作。由于操作系统 Linux 是大小写敏感的,MySQL 使用小写字母去匹配需要删除的库表文件,而.frm文件名中包含了大写,无法匹配,导致文件残留(mysql-error.log 此时记录,在删库过程中,无法找到对应.frm文件)。

三、场景模拟

测试环境:

操作系统CentOS Linux release 7.5.1804 (Core)
MySQL版本5.7.25, for linux-glibc2.12 (x86_64)

为了证实第二节的猜想是否准确,设计如下实验,模拟复现 mysqldump 报错。

  • 在 lower_case_table_names=0 ,严格区分大小写条件下创建测试库‘test_database’和测试表‘Test_table’;
  • 修改配置文件 lower_case_table_names=1 ,并重启 MySQL ;
  • 在 lower_case_table_names=1 条件下,模拟删除数据库:test_database ;
  • 查看物理文件信息以及 mysql-error.log 信息;
  • 使用 mysqldump 触发备份动作,复现报错。

通过以上实验,可以论证第二节的推测是准确的,并总结如下结论:

  • 操作系统 Linux 是大小写敏感的,在 lower_case_table_names=0(默认值)条件下,库表的物理文件会明确区分大小写;
  • 在 lower_case_table_names=1 条件下,MySQL 使用小写字母(不论 sql 语句里是否明确使用大写表名)去匹配需要删除的库表文件;
  • 在 lower_case_table_names=1 条件下,下发 Drop database 操作,由于表 frm 文件名包含大写,无法匹配,因此残留,而 idb 文件不论大小写都会被删除。

四、报错解决方案

通过第三节的场景模拟可以推测出,应用人员其实本意是要将库下的数据全部删除掉,但是因 MySQL 的环境因素,以及运维人员的操作不当,导致遗留下.frm文件未被清理掉。那么我们可以直接跳过相关库的备份,从而绕过此报错。

五、运维建议

运维中,难免有库表的迁移和改造的需求,这时需要特别注意 lower_case_table_names 的值以及库、表名的大小写,稍不留神就报错库或者表不存在。对此,整理如下两个场景以供大家运维参考。

场景1:将 MySQL 的环境变量 lower_case_table_names 从默认的 0 ,修改为1

  • 先将库名和表名转换为小写;
  • 编辑配置文件,添加配置:lower_case_table_names = 1 ;
  • 重启 MySQL 。

场景2:将大写的表名、库名规范改成小写的:

  • 表名改造:可以直接使用 RENAME TABLE 语句;
  • 库名改造:需要先使用 mysqldump ,将数据全部导出后,重建库名,再将数据导入进去。

致谢:感谢爱可生DBA巨佬操盛春、晏泽的鼎力相助!

Ansys 2025 R2工程仿真环境构建实录:系统级部署与许可证配置 Ansys作为工业级多物理场仿真平台,其安装远非普通软件部署,本质是Windows系统底层服务、运行时环境、许可证机制与硬件驱动的深度协同。理解其依赖的.NET Framework 4.8 Developer Pack、Visual C++ 2022 Redistributable及Windows服务(如Cryptographic Services、WMI)的精确版本关系,是保障Workbench、Fluent、Mechanical稳定启动的前提。技术价值在于规避隐性故障——如License Manager 阅读详情

相关推荐

Ubuntu 20.04 手动部署 LAMP+WordPress 全流程详解

LAMP 是 Web 应用最经典的技术栈,指 Linux 操作系统、Apache Web 服务器、MySQL 数据库与 PHP 脚本引擎的协同架构。其核心原理在于分层解耦:Linux 提供稳定运行时环境,Apache 处理 HTTP 请求与静态资源,PHP 解析动态逻辑,MySQL 持久化数据,四者通过标准协议(如 MySQLi 连接、mod_php 嵌入)紧密协作。该架构具备高度可控性、成熟排错体系和广泛生态支持,是 WordPress 等 PHP 应用的生产级基石。典型应用场景包括企业官网、内容管理系统

weixin_34099526的博客 344

mysql8.0大小写敏感问题巨坑,一定要提前看了!!!

线上业务升级到mysql8.0后遇到一个大坑,就是表名大小写问题,我们知道在mysql5的时候,只要在配置lower_case_table_names=1就可以解决大小写敏感问题,但是mysql8.0初始化后,一旦启动服务在设置无效。 如果已经晚了,那必须把MySQL数据库 data目录下所有文件删除,修改配置文件再启动。数据库会重新加载 ...

itxiaobaishu的博客 1695

AI Orchestration实战:MuleSoft+LangChain企业级智能编排

AI Orchestration(AI编排)是企业将大语言模型(LLM)与现有IT系统深度集成的核心范式,其本质是解耦‘数据流动’与‘智能决策’——通过API集成层(如MuleSoft)保障数据主权、协议兼容与安全合规,再由AI框架层(如LangChain)专注语义理解、知识检索与推理生成。该模式突破了单点调用大模型的局限,支撑金融风控、医疗报告、制造运维等强监管、多系统、高确定性场景。本文基于真实交付项目,详解MuleSoft作为‘企业系统神经中枢’与LangChain作为‘AI逻辑引擎’的协同设计、安全

weixin_34268310的博客 414

Linux下mysql 8 版本数据库表名大小写敏感解决 (包括mysql的完全删除)

文章目录1.完全卸载mysql2.安装mysql3.重点来了,这里千万不要直接启动mysql服务,因为mysql8对于表名的大小写敏感参数要在mysql初始化就完成设置才会生效!!!!!切记。不然要重新来一遍。 1.完全卸载mysql 前提:yum 安装方式 首先关闭服务和查看与mysql相关的 systemctl stop mysqld rpm -qa|grep mysql 删除服务 yum remove mysql mysql-server mysql-libs mysql-server

qq_43590771的博客 2683

多智能体框架选型本质:对话、状态与角色三大协作契约

多智能体系统并非简单选择一个AI框架,而是为业务流程确立可工程化的协作契约。从基础概念看,人机协同依赖对话协议,AI间协同依赖状态一致性,跨职能AI团队则依赖角色职责定义;其技术价值在于将模糊的‘AI应该怎么做’转化为可验证、可审计、可回滚的结构化契约——如AutoGen保障对话过程的可追溯性,LangGraph确保状态变更的确定性,CrewAI实现角色行为的接口化约束。典型应用场景包括客服实时响应(对话驱动)、金融风控审批(状态驱动)、跨境电商内容协同(角色驱动)。当业务中存在人工干预节点、多源数据融合或

weixin_33831196的博客 338

OpenClaw本地AI Agent在Windows 11上的保姆级部署指南

AI Agent是具备感知、规划与工具调用能力的智能体,其核心在于本地化运行、可控记忆与安全执行。OpenClaw作为基于Node.js的开源本地AI Agent框架,依托Windows 11的HVCI虚拟化安全、WSL2无缝集成及微软账户信任链,构建出数据不出域、指令可审计的边缘智能开发环境。技术价值体现在低延迟响应、强进程隔离与配置可追溯性;典型应用场景包括工业设备日志分析、企业内网知识问答与离线AI工作流验证。本指南聚焦Node.js 20.x稳定运行时、Git驱动的配置即代码实践,以及MySQL作为

weixin_34195546的博客 413

MySQL表名区分大小写的问题

MySQL数据库通过修改lower_case_table_names变量改变数据库表名是否区分大小写,lower_case_table_names=2 表名存储为指定的大小写,但是比较的时候是小写的。lower_case_table_names=0 表名存储为指定的大小写,比较时区分大小写。lower_case_table_names = 1 表名存储是小写的,但是比较时不区分大小写。unix,linux下lower_case_table_names默认值为 0,Windows下默认值是 1,

648

大白话系列:什么是微服务

用大白话和实际例子来通俗易懂地告诉你什么是微服务~

2401_87403086的博客 1240

mysql 大写数据库名 无法识别_MySQL数据库名、表名大小写问题

在MySQL中,数据库对应操作系统数据目录中的目录,数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于存储引擎)。因此,所使用操作系统的大小写敏感性决定了数据库名以及表名的大小写敏感性。这说明在大多数Unix中数据库名和表名对大小写敏感,而在windows中对大小写不敏感。列、索引、存储子程序和触发器名在任何平台对大小写不敏感,列的别名也不敏感。对于类Unix系统:数据库名和表名...

weixin_29017445的博客 1552

Win10如何使用BC3.1精简版

Win10如何使用BC3.1精简版 使用Borland C++3.1 学习μC/OS—Ⅱ几乎是现在的普遍做法,但是由于Win10系统不能直接使用BC3.1,所以需要用到DOSBox。 1、解压bc3.1精简版压缩包,本文将BC3.1文件夹复制在D盘下,DOSBOX按照默认路径安装。下图为两者安装目录图示: 2、修改DOSBOX的配置文件,找到DOSBox文件安装路径,记事本方式打开DOSBox 0.74-3 Options.bat文件,在此文件末尾添加: MOUNT C D:\BC//意为把D:\BC目录

qq_45547236的博客 2376

Windows10系统添加虚拟网卡(Microsoft Loopback Adapter)的方法

1、按下win + R键,在其中输入:hdwwiz,然后 (enter) 2、点击下一步即可 3、其次选择【网络适配器】,然后点击【下一步】。 4、在厂商处选择Microsoft,网络适配器处选择【Microsoft Loopback Adapter】选项 ,点击【下一步】。 5、通过上面几个步骤的设置后,一块虚拟网卡的安装设置就算是完成了。 ...

一个懒鬼的博客 2万+

Windows下设置MySql数据库名、表名是否区分大小写

1. 使用mysql-5.6.24-winx64 绿色版,安装好Mysql服务后,创建数据名、表名默认是不区分大小写的。 2、如果想要区分大小写 第一步:修改配置文件my.ini 在[mysqld] 后面添加 lower_case_table_names=0注意: 1:表示不区分大小写 0:表示区分大小写 第二步:重新启动MySql服务 --停止mysql服务 net sto

天马3798 7643

扣子(coze)实战|手把手教你搭建AI换装自动化工作流

摘要:本文介绍了使用Coze平台搭建AI换装工作流的详细教程。工作流包含模特图片上传、服装替换、任务提交和智能轮询等模块,通过change_model插件实现异步换装处理,并内置30秒循环查询机制。该工具支持自定义API密钥对接不同AI服务商,目前已上线共享空间并提供会员服务(59.8元/年)和VIP课程(499元/年),包含100+智能体和实战案例资源。完整体验地址见文中链接。

yueyehuguang的博客 1842

MySQL不规范的库表大小写带来的问题场景

数据库对象的大小写,一直是个很容易忽略,但是又可能引起问题的点。Oracle中的对象名称,如果不用""特指,都会存储为小写,MySQL则根据参数来控制大小写的存储。看到技术社区的这篇文章《故障分析 | 库表名-大小写不规范,运维两行泪》,就介绍了一个和对象名大小写相关的案例,值得我们借鉴。一、问题描述客户需要做一套库的迁移,因为库的数据量不大,40G左右,并且需要到远程机器上去做全量恢复。所以第一...

bisal的专栏 752

STM32智能头盔DIY全攻略:从心率监测到跌倒报警的完整实现

本文提供了基于STM32的智能头盔完整DIY实现方案,涵盖从心率监测到跌倒报警的核心功能。详细解析了系统设计、硬件搭建、软件算法及系统联调,重点介绍了STM32主控、MAX30102心率传感器和MPU6050姿态传感器的应用,并分享了跌倒检测算法与功耗优化等实战经验,为嵌入式开发与物联网创新项目提供全面指导。

sony5的博客 498

WinForm实战:如何用C#和PdfiumViewer打造一个功能齐全的PDF阅读器(含源码)

本文详细介绍了如何使用C#和PdfiumViewer库从零开始构建一个功能齐全的WinForm PDF阅读器。内容涵盖项目环境搭建、核心组件解析、基于命令模式的工具栏与UI架构设计,并深入讲解了智能缩放、页面导航、打印功能等核心交互的实现,以及内存管理和性能优化等高级话题,为开发者提供了一套完整的实战解决方案。

docker8compose的博客 503

掌握Docker:简化KES单机安装与管理的最佳实践

合集 - 经验分享(27)1.记一次由于操作失误致使数据库瘫痪的故障分析与解决方案2023-09-082.网络之谜:记一次失败排查的故事2023-11-153.你是否想知道如何应对高并发?Go语言为你提供了答案!2023-12-294.2023年终总结:拉帮结伙,拼搏探索新机遇2023-12-305.谁说后端不能画出美丽的动图?让我来给大家拜个年!01-296.【10秒开服】幻兽帕鲁全自动部署教程...

weixin_36866534的博客 392

基于 FPGA 的 CNN 卷积神经网络之池化层 Verilog 实现

池化层是卷积神经网络(CNN)中的关键组件,用于降低特征图的维度,减少计算量和防止过拟合。常见的池化操作包括最大池化和平均池化。FPGA 提供了高效的并行处理能力,可以加速这些操作。池化层在 CNN 中扮演重要角色,通过降低数据维度提升计算效率。在 FPGA 上实现池化层,可以充分利用硬件资源实现高效的并行计算,有助于提高实时应用中的推理速度。

走向CTO的路上... 1255

模板驱动文档自动化:从填空题到智能装配流水线

文档自动化并非简单排版提速,而是基于模板驱动的工程化内容装配方法——它将结构、样式、数据逻辑与输出策略封装为可复用的智能模板。其核心原理是通过字段绑定、条件渲染和样式隔离,实现业务意图到PDF/Word等交付物的零干预转化。相比AI生成易失品牌一致性、脚本开发门槛高,模板驱动兼顾法律合规性、数据准确性与业务可维护性。广泛应用于销售方案批量生成、咨询报告个性化交付、教育计划动态定制等需重复结构+变量字段+固定流程的场景,是企业知识资产规模化输出的关键基础设施。

weixin_33816300的博客 402

激光雷达点云配准:ICP与NDT算法详解

激光雷达点云配准:ICP与NDT算法详解​ ,人工智能,计算机视觉,大模型,AI,本文深入解析激光雷达点云配准的ICP与NDT算法。阐述了点云配准基础概念与评价指标,详解ICP算法原理、流程、最优变换矩阵计算、优缺点及改进版,给出Python代码示例;同样解析NDT算法的原理、流程、模型构建、优缺点、参数选择与代码示例。还对比两者在精度、效率、鲁棒性和适用场景的差异,提供算法选择建议,介绍实际应用案例、常见问题及解决方法,探讨算法发展趋势。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 15万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

MySQL中大小写问题

MySQL中大小写问题,如关键字、数据库、数据表、列、索引、视图、存储过程、函数、事件等大小写问题

hsd2012的专栏 7474

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

mysql中已经存在某个库中有大小写的表,将lower_case_table_names由0改为1对已经存在的表是否有影响?...

需求描述:   今天遇到了修改lower_case_table_names参数的问题,想了下,如果原来里面有表,表名有大小写的,   如果将lower_case_table_names从默认的0改为1之后,那么对于原来的表有没有影响.做个实验,在此   记录下. 操作过程: 1.原来未修改之前,库中创建大小写区分的表 mysql> drop database test05; ...

weixin_34353714的博客 252

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

MySQL表名大小写敏感导致的问题

开发过程中遇到一个MySQL大小写敏感导致的bug。

postnull的博客 3万+

LINUX下mysql的大小写是否区分设置

一、Linux中MySQL大小写详情: 1、数据库名严格区分大小写 2、表名严格区分大小写的 3、表的别名严格区分大小写 4、变量名严格区分大小写 5、列名在所有的情况下均忽略大小写 6、列的别名在所有的情况下均忽略大小写   二、设置MySQL表名不区分大小写 1、切换到root用户 $ su - root   2、修改/etc/my.cof配置文件, # sed -i

小灰的博客 9085

linux安装的mysql查询当前使用的my.cnf路径

    my.cnf是MySQL启动时加载的配置文件,一般会放在mysql的安装目录中,用户也可以放在其他目录加载。安装mysql后,系统中会有多个my.cnf文件,有些是用于测试的。使用locate my.cnf命令可以列出所有的my.cnf文件 命令 locate my.cnf 输出 /usr/local/Cellar/mysql/5.6.24/my.cnf /usr/local/C...

放牧的云的博客 1万+

达梦7常见问题

1.DM7下载地址是?http://www.dameng.com/service/download.shtml2.使用DM7如何寻求帮助?在本版发帖,版主会第一时间回答您的问题达梦24小时服务热线:400 991 6599达梦技术社区:http://bbs.dameng.com达梦官方QQ群:37727201 3.DM7安装注意事项为了您的数据安全,安装设置密码时...

weixin_34175509的博客 7581
上一篇: 故障分析 | MySQL死锁案例分析
下一篇: 故障分析 | cassandra 集群数据故障转移
爱可生开源社区
博客等级 码龄8年 1936粉丝 1004原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值