为啥在我的机器上C++的字符串之前要加一个大写L
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥在我的机器上C++的字符串之前要加一个大写L相关的知识,希望对你有一定的参考价值。
参考技术A wchar_t 类型 用 L"字符串";char 类型 用“字符串”;
为啥 Spring Batch 在我的 Ubuntu 20.04 机器上的 MySql 上创建小写表?
【中文标题】为啥 Spring Batch 在我的 Ubuntu 20.04 机器上的 MySql 上创建小写表?【英文标题】:Why Spring Batch is creating lower case table on MySql on my Ubuntu 20.04 machine?为什么 Spring Batch 在我的 Ubuntu 20.04 机器上的 MySql 上创建小写表? 【发布时间】:2021-11-14 10:47:18 【问题描述】:我正在处理一个 Spring Batch 项目(在 Spring Boot 上运行),我遇到了一个棘手的问题。
到目前为止,我基本上都使用 H2 数据库。为了投入生产(在 Ubuntu 20.04 机器上),我正在尝试用 MySql 替换它。
这是我的 application.properties 初始配置(使用 H2 数据库):
#Database Configuration
spring.datasource.url=jdbc:h2:mem:springbatch;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.username=sa
spring.datasource.password=
所以我用这些新配置替换了这些配置,使用 MySql 而不是 H2:
spring.datasource.platform=mysql
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/spring
spring.datasource.username=andrea
spring.datasource.password=Aprile_12_Test
spring.datasource.initialization-mode=always
正如您所见,初始化模式设置为 always,因此运行我的 Spring Batch 应用程序,表将被创建到我的 spring MySql 数据库中。表已创建但它们是小写的(进入使用的 schema-mysql.sql 文件都是大写的:
mysql> show tables;
+------------------------------+
| Tables_in_spring |
+------------------------------+
| BATCH_JOB_EXECUTION |
| BATCH_JOB_INSTANCE |
| DATABASECHANGELOG |
| DATABASECHANGELOGLOCK |
| batch_job_execution |
| batch_job_execution_context |
| batch_job_execution_params |
| batch_job_instance |
| batch_step_execution |
| batch_step_execution_context |
+------------------------------+
这似乎是一些错误的原因,因为它不会使用带有大写引用的表创建其他表。
为什么我会遇到这个问题?我能做些什么来解决这个问题?是否存在指定使用 .sql 文件中定义的大写名称的方法?
【问题讨论】:
使用小写名称使其独立于平台始终是一个好习惯。 Linux 和 Windows 对待它们的方式不同。 【参考方案1】:我自己解决了允许 Spring Boot\Batch 第一次创建数据库表。进入 application.properties::
spring.datasource.initialization-mode=always
从 pom.xml 中移除 Liquidebase 库:
<!--
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<scope>runtime</scope>
</dependency>
-->
最后在 application.properties 中禁用数据库表创建:
spring.datasource.initialization-mode=never
最终运行批处理。问题似乎是液基。
【讨论】:
以上是关于为啥在我的机器上C++的字符串之前要加一个大写L的主要内容,如果未能解决你的问题,请参考以下文章
为啥在我的 Mac 上编译的 C++ 库不能在服务器上运行?
为啥我的 Button 文本在 Lollipop 上强制全部大写?
为啥 Spring Batch 在我的 Ubuntu 20.04 机器上的 MySql 上创建小写表?