【问题标题】:SQL Error: 1366, SQLState: HY000 Error In Storing string valueSQL 错误:1366,SQLState:存储字符串值时出现 HY000 错误
【发布时间】:2022-01-13 12:03:13
【问题描述】:

在我的域的一个字段中保存字符串值时遇到问题

我的域名是

@Entity
@Table(name = "users")
class User {
    @Id
    @NotNull
    Long id
    @NotNull
    String uuid
    @NotNull
    String firstName
}

我正在从我的主 mysql 数据库中提取数据并将其保存到另一个数据库中。

       resultSet = statement.executeQuery(userQuery)
            while (resultSet.next()) {
                User user = new User()
                user.id = resultSet.getLong("a.id")
                user.uuid = resultSet.getString("a.uuid")
                user.firstName = resultSet.getString("b.first_name") // exception occurs here
                userRepository.save(user)
            }

我的一些数据正在保存,但是当我的主数据库中的数据包含用户时

firstname = ऋषभ(印地语名称) 然后它会抛出异常。

注意 - 只有我在这里提到的基本代码查询执行数据库连接一切都运行正常只有当我的查询结果包含不同语言的字符串时,才会在 user.firstName 中设置数据时遇到问题。

【问题讨论】:

  • 你的表格排序规则是什么?
  • url: jdbc:mysql://127.0.0.1:3306/reporting_db_1?autoreconnect=true&allowMultiQueries=true&useUnicode=yes&characterEncoding=UTF-8&useSSL=false
  • 我没有设置任何排序规则,我只是使用默认设置
  • 任何合理的服务器在 2022 年都应该默认为 UTF-8,但这是您需要验证的东西。使用像 latin1 这样的非 Unicode 排序规则可能是对这个问题的解释。

标签: mysql spring-boot spring-data-jpa


【解决方案1】:
ALTER TABLE user MODIFY first_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

【讨论】:

  • 我不会说印地语,但您应该知道_bin 排序规则不考虑语言特征,例如,可能导致WHERE user = 'Admin'admin 不匹配。跨度>
猜你喜欢
  • 2012-08-08
  • 1970-01-01
  • 2021-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-18
  • 2015-03-29
相关资源
最近更新 更多