CREATE TEMPORARY TABLE
一時テーブルを作成するには、このテーブルの照合順序はutf8_unicode_ci
デフォルト。なぜデフォルトでutf8_unicode_ci
?デフォルトを変更するにはどうすればよいですか?
CREATE TABLE構文では、文字セットと照合順序を指定できます
CREATE TABLEのMySQLドキュメント は次の構文を示しています。
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options] [partition_options] table_options: table_option [[,] table_option] ... table_option: ENGINE [=] engine_name | AUTO_INCREMENT [=] value | AVG_ROW_LENGTH [=] value | [DEFAULT] CHARACTER SET [=] charset_name <<------ (YOU NEED THIS OPTION) | CHECKSUM [=] {0 | 1} | [DEFAULT] COLLATE [=] collation_name <<------ (YOU NEED THIS OPTION) | COMMENT [=] 'string' | CONNECTION [=] 'connect_string' | DATA DIRECTORY [=] 'absolute path to directory' | DELAY_KEY_WRITE [=] {0 | 1} | INDEX DIRECTORY [=] 'absolute path to directory' | INSERT_METHOD [=] { NO | FIRST | LAST } | KEY_BLOCK_SIZE [=] value | MAX_ROWS [=] value | MIN_ROWS [=] value | PACK_KEYS [=] {0 | 1 | DEFAULT} | PASSWORD [=] 'string' | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} | STATS_AUTO_RECALC [=] {DEFAULT|0|1} | STATS_PERSISTENT [=] {DEFAULT|0|1} | TABLESPACE tablespace_name [STORAGE {DISK|MEMORY|DEFAULT}] | UNION [=] (tbl_name[,tbl_name]...)
したがって、構文は次のようになります。
CREATE TEMPORARY TABLE tblname
(
) ENGINE=MyISAM CHARACTER SET '...' COLLATE '...';
試してみる !!!
照合の既定のオプションを操作する場合は、次の方法があります。
これらの変数は、グローバルレベルまたはセッションレベルで変更できます。
照合を永続的に設定する場合は、/etc/my.cnf
に配置できます
[mysqld]
collation_connection = 'collation_connection'
とmysqlを再起動します
これを個々のBB接続にのみ必要な場合は、セッションでこれを実行します。
SET collation_connection = 'collation_connection ';
インストールされている文字セットと照合順序を確認するには、最近の投稿 MySQLの照合順序/文字セットのレベルが異なるのはなぜですか? を参照してください。
通常、一時テーブルはサーバー/データベースレベルからデフォルトを取得します。変更したい場合は、サーバー/ DBレベルで変更すると、他のすべてのオブジェクトにも影響します。
現在の一時テーブルに対して一度だけ必要な場合は、一時テーブルの作成プロセスで強く宣言してください。