MySQL视图-排序规则的非法混合

问题描述 投票:3回答:4

我会非常清楚:在MySQL中创建视图而又没有该死的非法归类错误的解决方案是什么?

我的SQL代码是这样的(它有一些葡萄牙语单词),而我的数据库默认排序规则是latin1_swedish_ci

CREATE VIEW v_veiculos AS
SELECT
    v.id,
    v.marca_id,
    v.modelo,
    v.placa,
    v.cor,
    CASE v.combustivel
        WHEN 'A' THEN 'Álcool'
        WHEN 'O' THEN 'Óleo Diesel'
        WHEN 'G' THEN 'Gasolina'
        ELSE 'Não Informado'
    END AS combustivel,
    marcas.marca,
    /*I think that the CONCAT and COALESCE below causes this error, when the next line the view works fine*/
    CONCAT(marca, ' ', v.modelo, ' - Placa: ', v.placa, ' - Combustível: ', COALESCE(v.combustivel, 'Não informado')) AS info_completa
FROM veiculos v
LEFT JOIN
    marcas on(marcas.id = v.marca_id);

我认为错误原因是因为我使用coalesce

和/或concat,因为完整的错误描述告诉我:归类(latin1_swedish_ci,IMPLICIT)和(utf8_general_ci,强制)操作“ coalesce”

我会很清楚:在MySQL中创建视图而又没有该死的非法归类错误的解决方案是什么?我的SQL代码是这样的(它有一些葡萄牙语单词),而我的数据库...

mysql sql mysql-error-1064 collation
4个回答
4
投票

您也可以使用CAST()将字符串转换为其他字符集。语法为:


1
投票

这有点旧,但是很好我有同样的错误,据我所知,视图没有排序规则,表却没有。因此,如果您得到“非法混合...”是因为您的视图正在链接(比较,无论如何)具有不同排序规则的2个表关键是,如果创建表,则可以指定排序规则,例如


0
投票

实际上是MySQL中的utf8_unicode_ci


0
投票

搜索了一会儿并从bug中获取信息后,我发现了一个[[hack

© www.soinside.com 2019 - 2024. All rights reserved.