【问题标题】:why table name changed to uppercase automatically in linux when exec with raw sql use go-gorm为什么在使用原始 sql 的 exec 使用 go-gorm 时,表名在 linux 中自动更改为大写
【发布时间】:2021-06-03 09:37:29
【问题描述】:

为什么在linux中使用原始sql的exec使用go-gorm时表名自动变为大写,但在windows中它可以正常工作。

环境: mysql8.0、centos7.6、go1.16、github.com/jinzhu/gorm 1.9

db.Debug().Exec("insert into t_if_user

错误日志:

Error 1146: Table 'gridtradingdb.T_IF_USER' doesn't exist 

我该如何解决这个问题。 帮助表示赞赏。

【问题讨论】:

  • 该表存在吗? Afaik,在 mysql 中,名称在 Windows 上不区分大小写,默认以小写形式存储,但有系统变量会改变它

标签: go-gorm


【解决方案1】:

来自reference

表和数据库名称如何存储在磁盘上并在 MySQL 中使用是 受 lower_case_table_names 系统变量的影响。 lower_case_table_names 可以取如下所示的值 桌子。此变量不影响触发器的大小写敏感性 身份标识。 在 Unix 上,lower_case_table_names 的默认值为 0. 在 Windows 上,默认值为 1。在 macOS 上,默认值为 2。

值 0:

表和数据库名称使用字母大小写存储在磁盘上 在 CREATE TABLE 或 CREATE DATABASE 语句中指定。姓名 比较区分大小写。您不应将此变量设置为 0 如果您在具有不区分大小写文件的系统上运行 MySQL 名称(例如 Windows 或 macOS)。如果你强制这个变量为 0 --lower-case-table-names=0 在不区分大小写的文件系统上使用不同的字母大小写访问 MyISAM 表名,索引损坏 可能会导致。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-06
    • 2021-06-08
    • 2021-09-03
    • 1970-01-01
    • 2016-08-26
    • 2017-06-14
    • 2019-11-01
    • 1970-01-01
    相关资源
    最近更新 更多