nacos启动报错 load derby-schema.sql error

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: 这篇文章描述了作者在使用Nacos时遇到的启动错误,错误提示为加载derby-schema.sql失败,作者通过将数据库从Derby更换为MySQL解决了问题。

nacos

今天在使用nacos时,启动时一直报错,错误日志如下:
在这里插入图片描述

2024-09-16 08:27:57 Caused by: java.lang.RuntimeException: com.alibaba.nacos.api.exception.runtime.NacosRuntimeException: errCode: 500, errMsg: load derby-schema.sql error. 
2024-09-16 08:27:57     at com.alibaba.nacos.config.server.service.datasource.DynamicDataSource.getDataSource(DynamicDataSource.java:60)
2024-09-16 08:27:57     at com.alibaba.nacos.config.server.service.repository.embedded.StandaloneDatabaseOperateImpl.init(StandaloneDatabaseOperateImpl.java:60)
2024-09-16 08:27:57     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2024-09-16 08:27:57     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2024-09-16 08:27:57     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2024-09-16 08:27:57     at java.lang.reflect.Method.invoke(Method.java:498)
2024-09-16 08:27:57     at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389)
2024-09-16 08:27:57     at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333)
2024-09-16 08:27:57     at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157)
2024-09-16 08:27:57     ... 125 common frames omitted
2024-09-16 08:27:57 Caused by: com.alibaba.nacos.api.exception.runtime.NacosRuntimeException: errCode: 500, errMsg: load derby-schema.sql error. 
2024-09-16 08:27:57     at com.alibaba.nacos.config.server.service.datasource.LocalDataSourceServiceImpl.reload(LocalDataSourceServiceImpl.java:100)
2024-09-16 08:27:57     at com.alibaba.nacos.config.server.service.datasource.LocalDataSourceServiceImpl.initialize(LocalDataSourceServiceImpl.java:167)
2024-09-16 08:27:57     at com.alibaba.nacos.config.server.service.datasource.LocalDataSourceServiceImpl.init(LocalDataSourceServiceImpl.java:83)
2024-09-16 08:27:57     at com.alibaba.nacos.config.server.service.datasource.DynamicDataSource.getDataSource(DynamicDataSource.java:49)
2024-09-16 08:27:57     ... 133 common frames omitted
2024-09-16 08:27:57 Caused by: java.sql.SQLTimeoutException: Login timeout exceeded.
2024-09-16 08:27:57     at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
2024-09-16 08:27:57     at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
2024-09-16 08:27:57     at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
2024-09-16 08:27:57     at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
2024-09-16 08:27:57     at org.apache.derby.jdbc.InternalDriver.timeLogin(Unknown Source)
2024-09-16 08:27:57     at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
2024-09-16 08:27:57     at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
2024-09-16 08:27:57     at org.apache.derby.jdbc.EmbeddedDriver.connect(Unknown Source)
2024-09-16 08:27:57     at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
2024-09-16 08:27:57     at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:354)
2024-09-16 08:27:57     at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202)
2024-09-16 08:27:57     at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:473)
2024-09-16 08:27:57     at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:554)
2024-09-16 08:27:57     at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
2024-09-16 08:27:57     at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
2024-09-16 08:27:57     at com.alibaba.nacos.config.server.service.datasource.LocalDataSourceServiceImpl.reload(LocalDataSourceServiceImpl.java:95)
2024-09-16 08:27:57     ... 136 common frames omitted
2024-09-16 08:27:57 Caused by: org.apache.derby.iapi.error.StandardException: Login timeout exceeded.
2024-09-16 08:27:57     at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
2024-09-16 08:27:57     at org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(Unknown Source)
2024-09-16 08:27:57     ... 152 common frames omitted
2024-09-16 08:27:57 2024-09-16 08:27:57,603 WARN [WatchFileCenter] start close

核心的错误:

  • Caused by: java.lang.RuntimeException: com.alibaba.nacos.api.exception.runtime.NacosRuntimeException: errCode: 500, errMsg: load derby-schema.sql error.
  • Caused by: com.alibaba.nacos.api.exception.runtime.NacosRuntimeException: errCode: 500, errMsg: load derby-schema.sql error.
  • Caused by: java.sql.SQLTimeoutException: Login timeout exceeded.

我的解决方法,将derby 换成 mysql

找到nacos的配置目录,找到其中的 application.propertiesmysql-schema.sql

在这里插入图片描述
在这里插入图片描述

  1. 将数据库初始化脚本执行,先创建一个数据库如:nacos_config, 执行完成后,数据表如下:

在这里插入图片描述

  1. 修改配置文件,需要注意的就是数据库url中的IP地址,需要换成真实的地址(我的是跑在docker中,所以就用了 172.17.0.1
spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://172.17.0.1:3306/nacos_config?characterEncoding=utf8&serverTimezone=Asia/Shanghai&connectTimeout=1000&socketTimeout=3000&autoReconnect=true # 网络地址需要你实际的地址,localhost(127.0.0.1)环回测试地址并不可用
db.user=root # 替换成你自己的
db.password=123456 # 替换成你自己的
  1. 解决
    在这里插入图片描述
    在这里插入图片描述

错误的解决方法!!!(删除derby)

解决方法:把nacos的数据卷映射目录中的/data/nacos/data/derby-data目录删除,然后重新启动。

这是一开始在某篇博客下看到的,删除掉derby后,nacos的数据会丢失,共享配置啥的…,错误的!
在这里插入图片描述

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
11月前
|
SQL Java 数据库连接
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
|
Java 数据库连接
nacos2.0.3报错No Datasource Set
nacos2.0.3报错No Datasource Set com.mysql.cj.exceptions.CJException: Public Key Retrieval is not allowed
nacos2.0.3报错No Datasource Set
|
11月前
|
SQL
【YashanDB知识库】使用leading hint调整SQL执行计划后报错YAS-04522 invalid hint leading
【YashanDB知识库】使用leading hint调整SQL执行计划后报错YAS-04522 invalid hint leading
【YashanDB知识库】使用leading hint调整SQL执行计划后报错YAS-04522 invalid hint leading
|
11月前
|
SQL Java 数据库连接
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
|
12月前
|
SQL 数据库
数据库数据恢复—SQL Server报错“错误 823”的数据恢复案例
SQL Server数据库附加数据库过程中比较常见的报错是“错误 823”,附加数据库失败。 如果数据库有备份则只需还原备份即可。但是如果没有备份,备份时间太久,或者其他原因导致备份不可用,那么就需要通过专业手段对数据库进行数据恢复。
|
12月前
|
SQL
【YashanDB 知识库】使用 leading hint 调整 SQL 执行计划后报错 YAS-04522 invalid hint leading
在 YashanDB 的所有版本中,使用 leading hint 调整 SQL 执行计划时可能出现“YAS-04522 invalid hint leading”错误,导致 SQL 无法正常执行。原因是 YashanDB 优化器的 Bug。解决方法为避免使用 leading hint。可通过创建测试表 a、b、c 并执行特定 SQL 语句来验证问题是否存在。
|
SQL 关系型数据库 MySQL
|
SQL 数据库
SQL error : “No query“问题参考
本文介绍了解决SQL中"No query"错误的步骤,包括错误提示、正确的SQL语句写法,以及更多相关参考信息。错误的原因是在构建更新语句时字段赋值之间缺少逗号,导致SQL解析失败。文章还提供了正确格式的SQL语句和相关错误处理的参考链接。
317 3
SQL error : “No query“问题参考
|
10月前
|
存储 Kubernetes 安全
Nacos-Controller 2.0:使用 Nacos 高效管理你的 K8s 配置
无论是使用 Nacos-Controller 实现配置的双向同步,还是直接在应用中接入 Nacos SDK 以获得更高级的配置管理特性,都能显著提升配置管理的灵活性、安全性和可维护性。使用 Nacos,您能够更好地管理和优化您的应用配置,从而提高系统的稳定性和可靠性。
843 49