ShardingSphere 启动报错 “Unknown table ‘keywords‘ in information_schema“ 完整解决方案 - 实践

news/2026/1/19 15:08:08/文章来源:https://www.cnblogs.com/yangykaifa/p/19501722

甄选推荐系统:

Pocket Bookmarks。 口袋书签
谷歌浏览器插件:立即安装 Pocket Bookmarks
edge浏览器插件:立即安装Pocket Bookmarks

 为什么你急需这个插件?

 3秒极简操作:无需学习成本,清爽界面一键管理

 跨设备无缝同步:电脑/手机随时存取重要链接

 黑科技AI助手:自动分类+智能推荐,比你自己更懂你的收藏习惯

 可视化数据看板:TOP10常用书签、访问趋势一目了然

 效率党最爱的功能:

  • 多维度分类:支持标签+文件夹双重管理
  • 智能排序:按访问频率/创建时间快速筛选
  • 团队协作:分类书签一键共享给同事
  • 个性展示:九宫格/列表/时间轴多种视图

问题背景

在使用 Spring Boot 2.6.8 + ShardingSphere 4.1.1 的项目中,启动应用时遇到如下错误:

java.sql.SQLSyntaxErrorException: Unknown table 'keywords' in information_schemaat com.mysql.cj.jdbc.DatabaseMetaDataUsingInfoSchema.getSQLKeywords(DatabaseMetaDataUsingInfoSchema.java:1193)

完整的错误堆栈显示,这个错误发生在 Spring Boot Actuator 的健康检查阶段,导致整个应用无法启动。

技术栈环境

  • Spring Boot: 2.6.8
  • ShardingSphere: 4.1.1
  • MySQL: 8.0.x (低于 8.0.13)
  • MySQL Connector: mysql-connector-java
  • 数据源: Dynamic DataSource + ShardingSphere

问题原因深度分析

为什么会报这个错?

这个问题的发生链路如下:

Spring Boot 启动↓
Spring Boot Actuator 健康检查↓
检查 shardingDataSource 健康状态↓
ShardingSphere 初始化数据源↓
MySQL JDBC 驱动查询元数据↓
调用 DatabaseMetaDataUsingInfoSchema.getSQLKeywords()↓
执行 SQL: SELECT * FROM information_schema.KEYWORDS↓
报错:表不存在 ❌

核心矛盾

information_schema.KEYWORDS 表只在 MySQL 8.0.13+ 版本中存在!

  • 如果你的 MySQL 版本 < 8.0.13,这个表根本不存在
  • MySQL JDBC 驱动(特别是新版本)会默认使用 information_schema 来查询元数据
  • ShardingSphere 在初始化时会触发驱动的元数据查询

三个"罪魁祸首"

  1. Spring Boot Actuator - 启动时主动检查数据库健康状态
  2. ShardingSphere - 启动时会进行表元数据检查
  3. MySQL JDBC 驱动 - 默认使用 information_schema 查询关键字列表

解决方案(三管齐下)

我们需要从三个层面同时解决问题,确保万无一失。

方案一:禁用 Spring Boot Actuator 的数据库健康检查

为什么这样做?
从源头上阻止健康检查触发数据源初始化,避免问题发生。

配置方法:

在 application.yml 或 application-{profile}.yml 中添加:

management:health:db:enabled: false

优点:

  • 立竿见影,直接阻止健康检查
  • 不影响应用正常使用数据库

缺点:

  • 失去了数据库健康检查的功能(可用其他监控方案补充)

方案二:禁用 ShardingSphere 的表元数据检查

为什么这样做?
即使数据源被初始化,也跳过不必要的元数据校验。

配置方法:

在 ShardingSphere 配置中添加 props 节点:

spring:sharding-sphere:datasource:names: hotel-resource-supplierhotel-resource-supplier:type: com.zaxxer.hikari.HikariDataSourcedriverClassName: com.mysql.cj.jdbc.DriverjdbcUrl: jdbc:mysql://your-host:3306/your_db?serverTimezone=Asia/Shanghaiusername: your_usernamepassword: your_passwordsharding:tables:your_table:actual-data-nodes: ds.your_table$->{0..7}table-strategy:inline:sharding-column: idalgorithm-expression: your_table$->{id % 8}# 关键配置:禁用表元数据检查props:sql.show: falsecheck-table-metadata-enabled: false

配置说明:

  • check-table-metadata-enabled: false - 禁用启动时的表结构校验
  • sql.show: false - 关闭 SQL 日志(可选,根据需要调整为 true)

优点:

  • 不影响 ShardingSphere 的分片功能
  • 只是跳过启动时的元数据校验步骤

方案三:JDBC URL 添加参数禁用 information_schema

为什么这样做?
告诉 MySQL JDBC 驱动不要使用 information_schema,改用 SHOW 命令查询元数据。

配置方法:

在 JDBC URL 中添加 useInformationSchema=false 参数:

spring:sharding-sphere:datasource:hotel-resource-supplier:jdbcUrl: jdbc:mysql://your-host:3306/your_db?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useInformationSchema=false

完整示例:

spring:sharding-sphere:datasource:names: hotel-resource-supplierhotel-resource-supplier:type: com.zaxxer.hikari.HikariDataSourcedriverClassName: com.mysql.cj.jdbc.DriverjdbcUrl: jdbc:mysql://jump-hw.xxxcloud.com:33061/hotel_resource_supplier?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&rewriteBatchedStatements=true&useInformationSchema=falseusername: ${DB_USER:your_username}password: ${DB_PWD:your_password}

优点:

  • 即使需要查询元数据,也使用兼容性更好的 SHOW 命令
  • 适用于所有 MySQL 版本

完整配置示例

application-uat.yml 完整配置

spring:autoconfigure:exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfiguredatasource:dynamic:primary: ceekee_hotel_resourcedatasource:ceekee_hotel_resource:type: com.zaxxer.hikari.HikariDataSourcedriverClassName: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://your-host:3306/ceekee_hotel_resource?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=falseusername: your_usernamepassword: your_passwordsharding-sphere:datasource:names: hotel-resource-supplierhotel-resource-supplier:type: com.zaxxer.hikari.HikariDataSourcedriverClassName: com.mysql.cj.jdbc.Driver# 方案三:添加 useInformationSchema=falsejdbcUrl: jdbc:mysql://your-host:3306/hotel_resource_supplier?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&rewriteBatchedStatements=true&useInformationSchema=falseusername: your_usernamepassword: your_passwordsharding:tables:international_supplier_hotel_room_type:actual-data-nodes: hotel-resource-supplier.international_supplier_hotel_room_type$->{0..7}table-strategy:inline:sharding-column: hotel_idalgorithm-expression: international_supplier_hotel_room_type$->{hotel_id % 8}international_supplier_hotel_room_type_image:actual-data-nodes: hotel-resource-supplier.international_supplier_hotel_room_type_image$->{0..7}table-strategy:inline:sharding-column: hotel_idalgorithm-expression: international_supplier_hotel_room_type_image$->{hotel_id % 8}# 方案二:禁用元数据检查props:sql.show: falsecheck-table-metadata-enabled: false
# 方案一:禁用健康检查
management:health:db:enabled: false

方案对比与选择建议

方案生效层级推荐指数适用场景
方案一:禁用健康检查Spring Boot⭐⭐⭐⭐⭐不需要数据库健康检查功能的项目
方案二:禁用 ShardingSphere 元数据检查ShardingSphere⭐⭐⭐⭐使用 ShardingSphere 的项目
方案三:JDBC 参数MySQL JDBC 驱动⭐⭐⭐⭐⭐所有使用 MySQL 的项目

推荐组合

最佳实践:三个方案同时使用

虽然理论上只需要其中一个方案即可解决问题,但为了确保在各种情况下都不会出错,建议三个方案同时配置:

  1. 方案一 在最外层拦截,避免触发问题
  2. 方案二 在 ShardingSphere 层拦截,即使触发也跳过
  3. 方案三 在 JDBC 层拦截,即使要查询也用兼容方式

这样形成三层防护,确保万无一失。


验证方案是否生效

配置完成后,重新启动应用,观察日志:

成功的日志标志

INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 16531 (http)
INFO  c.c.h.a.front.TripwiseHotelAbroadFrontApplication - Started TripwiseHotelAbroadFrontApplication in 12.345 seconds

不应该再出现的错误

❌ java.sql.SQLSyntaxErrorException: Unknown table 'keywords' in information_schema
❌ Error creating bean with name 'shardingDataSource'
❌ Error creating bean with name 'healthEndpoint'

常见问题 FAQ

Q1: 禁用健康检查会影响生产监控吗?

A: 不会。你可以通过以下方式补充监控:

  • 使用独立的数据库监控工具(如 Prometheus + Grafana)
  • 在业务代码中自定义健康检查逻辑
  • 使用数据库自带的监控功能

Q2: 为什么不直接升级 MySQL 到 8.0.13+?

A: 升级数据库涉及以下风险:

  • 需要停机维护
  • 可能存在兼容性问题
  • 需要充分的测试
  • 不是所有环境都能随意升级

使用配置解决是最低风险的方案。

Q3: 这个配置会影响 ShardingSphere 的分片功能吗?

A: 完全不会。这些配置只是:

  • 跳过启动时的健康检查
  • 跳过元数据校验
  • 改变元数据查询方式

分片规则、路由策略、SQL 解析等核心功能完全不受影响。

Q4: 如果只配置其中一个方案可以吗?

A: 可以,但不推荐。建议三个方案都配置,原因:

  • 配置成本极低(只需要几行配置)
  • 三层防护更可靠
  • 避免因环境差异导致的问题

扩展:其他类似问题

如果你遇到以下类似错误,也可以使用相同的解决方案:

Unknown table 'CHECK_CONSTRAINTS' in information_schema
Unknown table 'TABLESPACES' in information_schema
Unknown table 'ST_GEOMETRY_COLUMNS' in information_schema

这些都是因为 MySQL 版本差异导致的 information_schema 表不存在问题,使用 useInformationSchema=false 即可解决。


总结

问题本质

MySQL 8.0.13 版本引入了新的系统表 information_schema.KEYWORDS,但老版本 MySQL 没有这个表。当新版本的 MySQL JDBC 驱动尝试查询这个表时,就会报错导致应用无法启动。

解决思路

从三个层面同时阻断问题发生的路径:

  1. 应用层:禁用不必要的健康检查
  2. 中间件层:跳过 ShardingSphere 的元数据校验
  3. 驱动层:让 JDBC 使用兼容性更好的查询方式

核心价值

  • ✅ 快速解决:无需升级 MySQL,几分钟配置即可解决
  • ✅ 零风险:不影响任何业务功能
  • ✅ 通用性强:适用于所有 ShardingSphere + MySQL 项目
  • ✅ 防患未然:三层防护确保不会复发

最后的建议

虽然这个问题看起来很棘手,但本质上是版本兼容性问题。在无法立即升级数据库的情况下,通过合理的配置可以完美解决。

记住:最好的解决方案不是最复杂的,而是最稳定、最容易理解和维护的。


参考资料

  • MySQL 8.0.13 Release Notes
  • ShardingSphere 官方文档
  • MySQL Connector/J Configuration Properties
  • Spring Boot Actuator Health Indicators


创建时间: 2025-12-16
适用版本: Spring Boot 2.x + ShardingSphere 4.x + MySQL 5.7/8.0
关键词: ShardingSphere, MySQL, information_schema, KEYWORDS, 启动报错

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1183608.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026国内最新雨生红球藻_虾青素_虾青素胶囊品牌首选推荐红青夫:科研赋能健康,这家龙头企业实力领航. - 品牌推荐2026

2026最新雨生红球藻/虾青素/虾青素胶囊推荐:科研赋能健康,这家龙头企业实力领航 随着大健康产业的蓬勃发展,天然抗氧化与抗衰老成为国民健康消费的核心诉求。雨生红球藻作为天然虾青素的优质来源,其衍生产品虾青素…

2026年旗杆行业采购优选指南:不锈钢/锥形/电动旗杆品质阵营 - 深度智识库

2026 年,随着市政基建升级、校园标准化建设、企业形象焕新等需求的持续释放,旗杆行业正朝着“智能化、绿色化、服务一体化” 方向加速转型。不锈钢旗杆、锥形旗杆、电动旗杆、手动旗杆、国旗杆等核心产品的技术工艺、…

2026厂房环保工程设计施工一体化承包推荐:省心方案全解析 - 品牌2025

随着“双碳”目标持续推进,制造业对绿色生产环境的要求日益提高,尤其是在电子、医药、化工等高精尖产业聚集的长三角地区,厂房环保工程设计施工一体化承包已成为企业新建或改造项目中的关键环节。这类工程不仅涉及废…

2026年北京回收茅台酒公司推荐榜:北京华贵酒行,茅台酒回收上门/上门回收茅台酒/茅台酒回收/茅台回收/飞天茅台回收/回收飞天茅台/回收茅台/名酒回收/回收名酒公司精选

在名酒收藏与流通领域,茅台酒因其独特的稀缺性和稳健的收藏价值,始终占据市场核心。随着市场交易规模的扩大,2025年全国茅台回收市场规模已突破百亿元,年增长率保持在15%以上。在这一背景下,专业、规范、透明的回…

一张知识地图看懂网络安全:五大核心领域与技术栈全景解析

网络安全技术虽然非常复杂&#xff0c;但是归纳起来&#xff0c;主要就是为了解决以下三方面问题&#xff1a; 1.数据的机密性&#xff1a;即如何令人们发送数据&#xff0c;即使被其他无关人员截取&#xff0c;他们也无法获知数据的含义。 2.数据的有效性&#xff1a;指数据不…

高校学生公寓宿舍报修管理系统app的设计与实现小程序角色多

目录高校学生公寓宿舍报修管理系统APP的设计与实现摘要项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作高校学生公寓宿舍报修管理系统APP的设计与实现摘要 高校学生公寓宿舍报修管理系统APP旨在解决传统报…

手里有京东 E 卡的赚了!这样处理,回款快到离谱! - 可可收

京东 e 卡作为平台热门预付卡,不管是自用购物还是送礼都很受欢迎。但不少人手里都会攒下闲置的京东 e 卡,怎样才能安全又高效地完成回收?今天就给大家整理了 4 个超实用的方法,步骤简单易懂,帮你轻松处理闲置卡券…

一文读懂网络安全:核心内涵、常见威胁与全景防御技术体系

伴随着互联网的发展&#xff0c;它已经成为我们生活中不可或缺的存在&#xff0c;无论是个人还是企业&#xff0c;都离不开互联网。正因为互联网得到了重视&#xff0c;网络安全问题也随之加剧&#xff0c;给我们的信息安全造成严重威胁&#xff0c;而想要有效规避这些风险&…

DeepSeek-R1-Distill-Qwen-1.5B详解:垂直领域性能提升12%

DeepSeek-R1-Distill-Qwen-1.5B详解&#xff1a;垂直领域性能提升12% 1. 模型架构与技术背景 1.1 知识蒸馏驱动的轻量化设计 DeepSeek-R1-Distill-Qwen-1.5B是DeepSeek团队基于Qwen2.5-Math-1.5B基础模型&#xff0c;通过知识蒸馏技术融合R1架构优势打造的轻量化版本。其核心…

高考志愿填报推荐系统vue

目录高考志愿填报推荐系统Vue摘要项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作高考志愿填报推荐系统Vue摘要 高考志愿填报推荐系统基于Vue.js框架开发&#xff0c;旨在为考生提供智能化、个性化的志愿填…

Open Interpreter正则表达式生成:复杂文本匹配一键完成教程

Open Interpreter正则表达式生成&#xff1a;复杂文本匹配一键完成教程 1. 引言&#xff1a;本地AI编程的新范式 随着大模型在代码生成领域的深入应用&#xff0c;开发者对“自然语言驱动编程”的需求日益增长。然而&#xff0c;多数AI编程工具依赖云端API&#xff0c;存在数…

董子健的导演首秀,凭什么让全网破防?

当演员董子健变成导演董子健&#xff0c;他交出的《我的朋友安德烈》是一份令人惊讶的答卷——没有生涩&#xff0c;没有炫技&#xff0c;只有一种近乎本能的真诚。这份真诚&#xff0c;让每个镜头都有了呼吸。 看这部电影&#xff0c;你会忘记导演是个新人。那些恰到好处的留…

盐城安信实验仪器值得信赖吗?盐城安信实验仪器操作便利性如何? - 工业品牌热点

在实验室分离设备领域,一台性能稳定、操作便捷的离心机是科研实验、临床检测与工业生产的核心支撑。面对市场上良莠不齐的离心机产品,如何挑选到既适配需求又高性价比的设备?以下结合行业痛点与用户需求,为你解析值…

一键启动多语言翻译服务|HY-MT1.5-7B + vLLM快速上手指南

一键启动多语言翻译服务&#xff5c;HY-MT1.5-7B vLLM快速上手指南 在内容全球化加速的今天&#xff0c;企业对高质量、低延迟、易集成的机器翻译能力需求日益增长。无论是跨境电商的商品本地化、跨国团队协作&#xff0c;还是面向少数民族地区的公共服务&#xff0c;一个稳定…

基于android的课程预约评价系统在线教育app小程序

目录摘要项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作摘要 随着在线教育的普及&#xff0c;开发一款基于Android平台的课程预约评价系统成为提升用户体验和教学管理效率的重要需求。该系统整合课程预约…

2025年溶液滤芯厂家权威推荐榜单:天然气聚结滤芯/气液聚结滤芯/气体除油滤芯/聚结滤芯/临时过滤器源头厂家精选

在化工、制药、食品及新能源等精密制造领域,溶液过滤是保障产品纯度、设备安全与工艺稳定的核心环节。溶液滤芯作为过滤系统的关键耗材,其性能直接影响过滤精度、效率与长期运行成本。面对市场上众多的滤芯供应商,如…

手把手构建网络安全检测体系:核心原理、关键技术与实战工具全景指南

一&#xff0c;网络安全漏洞 安全威胁是指所有能够对计算机网络信息系统的网络服务和网络信息的机密性&#xff0c;可用性和完整性产生阻碍&#xff0c;破坏或中断的各种因素。安全威胁可分为人为安全威胁和非人为安全威胁两大类。 1&#xff0c;网络安全漏洞威胁 漏洞分析的…

2026年重庆民事案件协查服务公司专业盘点:个人事务咨询 /婚姻纠纷 /事实梳理顾问 /个人信息核验/ 商业事务协查/商业信息咨询顾问服务机构精选

当面对复杂的民事纠纷时,可靠的第三方协查服务机构能为案件提供至关重要的证据支持和调查协助,而这正是许多人急需却又难以判断如何选择的专业领域。 民事调查服务市场在近年来呈现出增长态势,根据行业报告,民事调…

【收藏】2026年,Java或最先被淘汰?别慌!这才是程序员抓AI红利的最优解

看到这个标题点进来的你&#xff0c;此刻是不是有这些想法&#xff1f; A. 心头一紧&#xff0c;生怕自己的饭碗不保&#xff0c;赶紧进来一探究竟 B. 满脸不信&#xff0c;准备敲键盘反驳“Java怎么可能凉” C. 纯粹吃瓜心态&#xff0c;就想看看这标题党到底想说啥不管你选哪…

【收藏】AI智能体推理技术终极指南,从思维链到多智能体系统,全面提升大模型性能

本文详细解析了AI智能体的八大推理技术&#xff0c;包括思维链、思维树、自我修正、程序辅助语言模型、可验证奖励强化学习、推理与行动、辩论链和辩论图。这些技术通过不同方式增强智能体的推理能力&#xff0c;从简单问题拆解到复杂多路径探索和模型协作&#xff0c;帮助AI系…