У меня есть несколько дампов MySQL, которые содержат выражения создания хранимых процедур:
ДампDELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
/*!50003 SET character_set_client = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
ALTER DATABASE `DB` CHARACTER SET utf8 COLLATE utf8_general_ci ;
/*!50003 DROP PROCEDURE IF EXISTS `GetInfo` */;
ALTER DATABASE `DB` CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!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=`dba`@`%` PROCEDURE `GetInfo`(
__id BIGINT,
)
BEGIN
SELECT *
FROM Test
WHERE id = __id
END ;;
DELIMITER ;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
/*!50003 SET character_set_client = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection = @saved_col_connection */ ;
ALTER DATABASE `DB` CHARACTER SET utf8 COLLATE utf8_general_ci ;
/*!50003 DROP PROCEDURE IF EXISTS `GetPrice` */;
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!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=`dba`@`%` PROCEDURE `GetPrice`(__id BIGINT)
BEGIN
SELECT * FROM Prices WHERE id = __id;
END ;;
DELIMITER ;
Проблема в том, что перед некоторыми из них принудительно задается кодировка:
ALTER DATABASE `DB` CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
Можно ли каким-то образом заставить MySQL принудительно выставлять кодировку базы в utf8_general_ci, вне зависимости от того, что написано перед созданием хранимки? В самом начале дампа и так выставлено, но MySQL это не использует при создании хранимок:
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `DB` /*!40100 DEFAULT CHARACTER SET utf8 */;