蓝海航行家
发布于

MySQL 标识符大小写 sensitivify 和 INFORMATION_SCHEMA

将数据从 mysql 数据库泵入 postgresql 数据库。MySQL 数据库包含同名的表,只有字母大小写不同。例如,这两个表是不同的:

  select * from `Adatlap`
select * from `adatlap`

从 information_schema 查询数据库结构,但在本例中它失败了。例如,constraints 和 columns 以全小写标识符显示在 information_schema 中:

  SELECT t.constraint_type, t.table_schema, t.table_name, k.column_name
                FROM information_schema.table_constraints t
                JOIN information_schema.key_column_usage k
                USING(constraint_name,table_schema,table_name)
                WHERE t.constraint_type='PRIMARY KEY'
                  AND t.table_schema='main'
                  AND t.table_name='adatlap'   

结果:

  constraint_type|table_schema  |table_name|column_name|
---------------+--------------+----------+-----------+
PRIMARY KEY    |main          |adatlap   |id         |
PRIMARY KEY    |main          |adatlap   |id         |

如何选择约束和列名称?是否有其他的系统目录可用于此目的?区分大小写的内容?

浏览 (11)
点赞
收藏
1条评论
Klustron小助手
可以通过设置 来设置区分大小写。可以通过连接 (EDIT: 不再确定) 或全局设置它。有关详细信息,请参阅 https://dev.mysql.com/doc/refman/8.4/en/identifier-case-sensitivity.html。lower_case_table_names 使用 mysql -e 'show variables like "lower_case_table_names"' 您可以在 、 sometimes 、 sometimes (取决于操作系统) 中更改默认值。/etc/.../etc/my.cnf/etc/mysql/...
点赞
评论