2015-12-18 3 views
9

Я импортировал БД из локальной машины на серверную машину. При импорте базы данных значения набора символов для БД устанавливаются по умолчанию по умолчанию на «Latin». Я изменил набор символов на «utf8» для базы данных. Но хранимая процедура значений сортировки базы данных не изменяется. В настоящее время это «latin1_swedish_ci». Как изменить значения сортировки базы данных от «latin1_swedish_ci» до «utf8_general_ci» для всех хранимых процедур.Изменение хранимой процедуры MySQL 'Database Collation' name

SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME 
FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = DB_Name; 

USE DB_Name; 
ALTER DATABASE DB_Name 
DEFAULT CHARACTER SET = utf8 
DEFAULT COLLATE=utf8_general_ci; 

SET NAMES UTF8; 

Заранее спасибо.

+0

Один из вариантов - ПРОЦЕДУРА РАЗМОРАЖИВАНИЯ И ПРОЦЕДУРА СОЗДАНИЯ. Другой вариант (менее рекомендуется) может вручную обновить столбец 'db_collation' таблицы' proc' базы данных 'mysql'. Идеальным является правильная настройка вашего сервера MySQL, а затем импорт. – wchiquito

+0

Можете ли вы снова запустить импорт? Я попытаюсь решить эту проблему до импорта. Его проще указать правильную кодировку перед началом импорта. В вашей дампе db содержится команда SET NAMES? – olegsv

+0

@olegsv Да, вы правы. Я решил эту проблему перед импортом дампа и дампа БД с помощью SET NAMES. – Nisar

ответ

6

Как указано под CREATE PROCEDURE and CREATE FUNCTION Syntax (курсив добавлен):

Если CHARACTER SET и COLLATE атрибуты нет, характера базы данных набора и порядок сопоставление фактически в рутинное время создания используются. Чтобы избежать использования сервером набора символов и сопоставления базы данных, укажите явные атрибуты CHARACTER SET и COLLATE для параметров символьных данных.

Если вы изменили набор символов или сортировку по умолчанию базы данных, хранимые процедуры, использующие значения по умолчанию для базы данных, должны быть удалены и воссозданы, чтобы они использовали новые значения по умолчанию.

+1

В документации на самом деле не указано, как их использовать. Кроме того, в mysql workbench есть ошибка, которая говорит о том, что COLLATE всегда недействителен, даже если это так. –

+0

@ Downvoter: Зачем комментировать? – eggyal

Смежные вопросы