【问题标题】:MySql VIEW created with charset latin1 all configs are set to utf8使用 charset latin1 创建的 MySql VIEW 所有配置都设置为 utf8
【发布时间】:2019-02-18 01:41:03
【问题描述】:

我正在尝试创建一个简单的视图,但我收到错误,因为该视图是使用 latin1 而不是 utf8 创建的。

视图看起来像这样:

create or replace view
  my_view
  as
    select * from my_table
  group by some_field
collate utf8_unicode_ci
;

错误我得到的是:

COLLATION 'utf8_unicode_ci' is not valid for CHARACTER SET 'latin1'

我所做的,检查了多个配置选项:

全球

show variables like "%char%";
character_set_client,utf8
character_set_connection,utf8
character_set_database,utf8
character_set_filesystem,binary
character_set_results,utf8
character_set_server,utf8
character_set_system,utf8

表格我用来创建视图:

SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_COLLATION
FROM INFORMATION_SCHEMA.TABLES
where TABLE_NAME in ('my_table');
;
def,my_database,my_table,utf8_unicode_ci

该表的列

SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLLATION_NAME
FROM INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME in ('my_table');
def,my_database,my_table,id,null
def,my_database,my_table,active,null
def,my_database,my_table,title,utf8_unicode_ci

【问题讨论】:

标签: mysql encoding collation


【解决方案1】:

我在 MySQL 数据库中遇到了同样的问题,我在这样的 CASE 中有元音变音/特殊字符(简化示例):

CASE
 WHEN cfs.value = "ungeklärt" THEN "" -- the character 'ä' was an issue for me here
 ELSE cfs.value
END AS "Category"

当我将此语句保存为视图时,错误为我弹出。 当您相应地设置名称first时,您能否检查它是否为您解决了问题?就我而言,这是latin1 而不是utf8,因为旧数据库。

set names latin1;

如果我正确理解了您的情况,那将是您的情况:

set names utf8;

【讨论】:

    猜你喜欢
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 2010-11-29
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    相关资源
    最近更新 更多