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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 这篇文章描述了作者在使用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的数据会丢失,共享配置啥的…,错误的!
在这里插入图片描述

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
SQL Java 数据库连接
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
|
9月前
|
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
|
4月前
|
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
|
4月前
|
SQL Java 数据库连接
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
|
5月前
|
SQL 数据库
数据库数据恢复—SQL Server报错“错误 823”的数据恢复案例
SQL Server数据库附加数据库过程中比较常见的报错是“错误 823”,附加数据库失败。 如果数据库有备份则只需还原备份即可。但是如果没有备份,备份时间太久,或者其他原因导致备份不可用,那么就需要通过专业手段对数据库进行数据恢复。
|
5月前
|
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 语句来验证问题是否存在。
|
9月前
|
SQL 关系型数据库 MySQL
|
10月前
|
SQL 数据库
SQL error : “No query“问题参考
本文介绍了解决SQL中"No query"错误的步骤,包括错误提示、正确的SQL语句写法,以及更多相关参考信息。错误的原因是在构建更新语句时字段赋值之间缺少逗号,导致SQL解析失败。文章还提供了正确格式的SQL语句和相关错误处理的参考链接。
154 3
SQL error : “No query“问题参考
|
3月前
|
存储 Kubernetes 安全
Nacos-Controller 2.0:使用 Nacos 高效管理你的 K8s 配置
无论是使用 Nacos-Controller 实现配置的双向同步,还是直接在应用中接入 Nacos SDK 以获得更高级的配置管理特性,都能显著提升配置管理的灵活性、安全性和可维护性。使用 Nacos,您能够更好地管理和优化您的应用配置,从而提高系统的稳定性和可靠性。
367 49