java - Spring Schema 注册表服务器和 MySQL

标签 java mysql spring-cloud spring-cloud-stream

我正在尝试按照描述运行 Spring Cloud Schema 注册表服务器 here 。我希望模式在重新启动之间保持不变,因此我想使用 MySQL 来实现这一点。但在应用程序启动期间出现以下错误:表“sr.schema_repository”不存在

这是否意味着我必须自己创建所需的表?但是这张表的结构是怎样的呢?为什么当使用默认的嵌入式 H2 数据库时会自动创建所需的表?

最佳答案

要使用外部数据库设置 SpringSchemaRegistry,您需要执行以下步骤

1。步骤:添加数据库驱动

第一步,您需要将数据库 JDBC 驱动程序添加到您的模块 (gradle/maven)。

2。步骤:将数据源配置添加到您的 application.yml

spring:
  datasource:
    url: jdbc:mysql://localhost/schema-registry
    username: schema-registry
    password: schema-registry
    testWhileIdle: true
    validationQuery: SELECT 1

3。步骤:创建表

您可以设置 hibernate ddl-auto 以便在每次启动时自动创建和更新表。因此,将以下内容添加到您的 application.yml 文件中。

spring:
  jpa:
    hibernate:
      ddl-auto: update

注意:ddl-auto: update 将自动创建表,并在每次启动时更新它们,当 JPA 实体发生变化时(或者可能是您的命名策略)。

如果您愿意,只需一张 table 。您可以使用以下 SQL 脚本轻松创建它。

CREATE TABLE `schema_repository` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `definition` longtext NOT NULL,
  `format` varchar(255) NOT NULL,
  `subject` varchar(255) NOT NULL,
  `version` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

该脚本适用于 MySQL,但结构非常简单,因此您可以轻松地将其适应您喜欢的数据库。

关于java - Spring Schema 注册表服务器和 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47507447/

相关文章:

java - 如何在字符串中查找 int 值

java - 在 Jtable 列中显示处理后的值并使用原始值进行排序?

java - 第一个Java程序(计算器)问题

java - 如何在MySQL中存储时间

mysql - 如何获取sql IN语句中字符串中每个条目的最小值?

java - Spring 启动中使用的System.getenv()在sonarQube中显示为安全漏洞

java - 查询中的 SQL 变量导致意外的 SQL 语法错误

java - Spring Cloud 网关: Modified Response Body is Truncated

spring - Zuul Ribbon 异常总是返回 500 响应

java - 如何从 Flux<DataBuffer> 主体获取数据