ローカルマシンからサーバーマシンにDBをインポートしました。データベースのインポート時に、DBの文字セット値はシステムのデフォルトで "Latin"に設定されます。データベースの文字セットを "utf8
"に変更しました。ただし、データベース照合値のストアドプロシージャは変更されません。現在は "latin1_swedish_ci
"です。すべてのストアドプロシージャのデータベース照合値を "latin1_swedish_ci
"から "utf8_general_ci
"に変更する方法MySQLストアドプロシージャの「データベース照合」の名前を変更します。
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;
ありがとうございます。 CREATE PROCEDURE and CREATE FUNCTION Syntaxの下で文書化されたよう
オプションは、DROP PROCEDUREとCREATE PROCEDUREです。別のオプション(あまり推奨されない)は、データベースmysqlのテーブル 'proc'の' db_collation'カラムを手動で更新することができます。理想的なのは、MySQLサーバを適切に設定してからインポートを行うことです。 – wchiquito
インポートをもう一度実行できますか?私はインポートの前にこれを解決しようとします。インポートを開始する前に、正しいエンコーディングを指定する方が簡単です。あなたのDBダンプはSET NAMESコマンドを含んでいますか? – olegsv
@olegsvはい、あなたは正しいです。 DBダンプをインポートする前にこの問題を解決し、SET NAMESを含むダンプを作成しました。 – Nisar