存储过程中的数据库归类

时间:2018-02-22 20:40:05

标签: mysql stored-procedures collation

我有一个包含创建存储过程的过程的转储:

 void Main()
{
    int[] nums = { 1, 2, 3 };
    var persons = nums.Select(n=>new Person{Age=n});

}

但是,当我表演时:

DELIMITER ;
/*!50003 SET character_set_client  = utf8 */ ;
/*!50003 SET character_set_results = utf8 */ ;
/*!50003 SET collation_connection  = utf8_general_ci */ ;
/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
CREATE DEFINER=`sys`@`%` PROCEDURE `test`(_Test bigint )
BEGIN
    select * from test;
END ;;
DELIMITER ;

我明白了:

SHOW PROCEDURE STATUS WHERE Name LIKE '%test%'\G;

为什么*************************** 1. row *************************** Db: TEST Name: test Type: PROCEDURE Definer: root@% Modified: 2018-02-22 23:25:27 Created: 2018-02-22 23:25:27 Security_type: DEFINER Comment: character_set_client: utf8 collation_connection: utf8_general_ci Database Collation: latin1_swedish_ci 表示Database Collation

2 个答案:

答案 0 :(得分:0)

对于表情符号,您需要utf8mb4,而不是utf8latin1

我认为Database Collation不是问题。

答案 1 :(得分:0)

在您的表中,测试(以及所有其他表)必须更改字符集:

alter table test character set utf8mb4;

还包含文字的字段:

alter table test change varchar_column varchar_column varchar(XX) 
                                        character set utf8mb4;