web-dev-qa-db-ja.com

TEMPORARY TABLEのデフォルトの照合順序の変更

CREATE TEMPORARY TABLE一時テーブルを作成するには、このテーブルの照合順序はutf8_unicode_ciデフォルト。なぜデフォルトでutf8_unicode_ci?デフォルトを変更するにはどうすればよいですか?

2
Arash Mousavi

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の照合順序/文字セットのレベルが異なるのはなぜですか? を参照してください。

1
RolandoMySQLDBA

通常、一時テーブルはサーバー/データベースレベルからデフォルトを取得します。変更したい場合は、サーバー/ DBレベルで変更すると、他のすべてのオブジェクトにも影響します。

現在の一時テーブルに対して一度だけ必要な場合は、一時テーブルの作成プロセスで強く宣言してください。

0
Rex