source

Swisscom Cloud 내의 mariadb의 기본 서버 문자는 무엇이며 어떻게 변경할 수 있습니까?

bestscript 2022. 11. 24. 23:41

Swisscom Cloud 내의 mariadb의 기본 서버 문자는 무엇이며 어떻게 변경할 수 있습니까?

Swisscom Cloud MariaDB Service에 대한 설명 요청입니다.이것은 일반적인 MariaDB 기본 문자에 관한 것이 아닙니다.

  1. Swisscom Cloud의 MariaDB Service 기본값이 무엇인지 알고 싶습니다.
  2. 실제로 그런다고 가정하면latin1이 기본값을 변경할 수 있는지 알고 싶습니다.utf-8또는 보다 정확하게utf8mb4의 경우와 같습니다.

질문의 주된 이유는 쉽게 재 Import할 수 있는 백업을 생성하는 데 문제가 있으며, 추출할 때 크기가 크게 달라지기 때문입니다.mysqldump ... -r backup.sql통한 수출과 비교해서Sequel Pro.

도구를 사용하지 않습니다.Sequel Pro.

레거시 MariaDB/Galera 클러스터는latin1기본 문자 집합으로 설정합니다.이 디폴트 설정은 업스트림 MariaDB 개발자에 의한 것입니다.대부분의 개발자와 DBA는 이 결정을 좋아하지 않습니다.

여기 있습니다CREATE TABLE구문( 참조)COLLATE그리고.CHARACTER SET) :

CREATE TABLE tbl_name (column_list)
    [[DEFAULT] CHARACTER SET charset_name]
    [COLLATE collation_name]]

서버 설정(이 명령문은 모든 고객이 실행할 수 있습니다.관리자 권한은 필요 없습니다.

MariaDB [(none)]> show global variables like 'character_set%';
+--------------------------+-------------------------------------+
| Variable_name            | Value                               |
+--------------------------+-------------------------------------+
| character_set_client     | latin1                              |
| character_set_connection | latin1                              |
| character_set_database   | latin1                              |
| character_set_filesystem | binary                              |
| character_set_results    | latin1                              |
| character_set_server     | latin1                              |
| character_set_system     | utf8                                |
| character_sets_dir       | /usr/share/mariadb-galera/charsets/ |
+--------------------------+-------------------------------------+
8 rows in set (0.00 sec)

기존 MariaDB를 계속 사용하는 경우 서비스 인스턴스 빨리 마이그레이션하십시오.레거시 클러스터는 1~2일 후에 읽기 전용이 됩니다.

완전히 새로운 MariaDB 서비스가 준비되어 있습니다.MariaDB 버전 10 등 많은 개선 사항이 포함되어 있으며 가능한 한 빨리 업그레이드할 것을 권장합니다.

이 단계별 가이드는 2017년 8월 16일에 작성되었습니다.

새 클러스터는 더 나은 기본 설정을 사용합니다.

MariaDB [(none)]> show global variables like 'character_set%';
+--------------------------+------------------------------------------------------------------------------------------+
| Variable_name            | Value                                                                                    |
+--------------------------+------------------------------------------------------------------------------------------+
| character_set_client     | utf8                                                                                     |
| character_set_connection | utf8                                                                                     |
| character_set_database   | utf8                                                                                     |
| character_set_filesystem | binary                                                                                   |
| character_set_results    | utf8                                                                                     |
| character_set_server     | utf8                                                                                     |
| character_set_system     | utf8                                                                                     |
| character_sets_dir       | /var/vcap/data/packages/mariadb/95a1896c4bcdccb4e1abd81b7d00eb33aedb0da0/share/charsets/ |
+--------------------------+------------------------------------------------------------------------------------------+
8 rows in set (0.01 sec)

데이터를 새 클러스터로 가져오기 전에 문자 집합과 데이터 정렬을 변경하려는 경우.

ALTER TABLE tbl_name
    [[DEFAULT] CHARACTER SET charset_name]
    [COLLATE collation_name]

이런 거 여러 번 했어요.이 작업은 2만 이상의 레코드로 진행해서는 안 된다는 점에 유의하시기 바랍니다.

마리아에 대한 우리의 문서도 봐주세요.DB

DDL 변경을 장기간 실행해야 할 경우 Swisscom Application Cloud 지원팀에 문의하십시오(예:ALTER TABLE수많은 기록과 함께)DDL을 장시간 실행하면 클러스터의 모든 고객이 중단됩니다.

이것은 두 가지 다른 점을 보여주기 위한 것이다.ALTERs; 1개는 아무 쓸모도 없고, 1개는 당신이 원하는 것을 한다.

-- '잘못된' ALTER를 시도합니다.

    DROP TABLE IF EXISTS atc;
    CREATE TABLE atc ( c VARCHAR(11))  CHARACTER SET latin1 ;
    INSERT INTO atc (c) VALUES ('ÃÔäô');
    SHOW CREATE TABLE atc\G
    SELECT c, HEX(c) FROM atc;   -- note the latin1 encoding
    ALTER TABLE atc CHARACTER SET utf8;
    SHOW CREATE TABLE atc\G   -- the column stays latin1, overriding the table
    SELECT c, HEX(c) FROM atc;   -- still latin1 encoding

mysql> 
mysql> -- Try the 'wrong' ALTER:
mysql> 
mysql> DROP TABLE IF EXISTS atc;
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE TABLE atc ( c VARCHAR(11))  CHARACTER SET latin1 ;
Query OK, 0 rows affected (0.02 sec)

mysql> INSERT INTO atc (c) VALUES ('ÃÔäô');
Query OK, 1 row affected (0.00 sec)

mysql> SHOW CREATE TABLE atc\G
*************************** 1. row ***************************
       Table: atc
Create Table: CREATE TABLE `atc` (
  `c` varchar(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

mysql> SELECT c, HEX(c) FROM atc;   -- note the latin1 encoding
+----------+----------+
| c        | HEX(c)   |
+----------+----------+
| ÃÔäô     | C3D4E4F4 |
+----------+----------+
1 row in set (0.00 sec)

mysql> ALTER TABLE atc CHARACTER SET utf8;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> SHOW CREATE TABLE atc\G   -- the column stays latin1, overriding the table
*************************** 1. row ***************************
       Table: atc
Create Table: CREATE TABLE `atc` (
  `c` varchar(11) CHARACTER SET latin1 DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

mysql> SELECT c, HEX(c) FROM atc;   -- still latin1 encoding
+----------+----------+
| c        | HEX(c)   |
+----------+----------+
| ÃÔäô     | C3D4E4F4 |
+----------+----------+
1 row in set (0.00 sec)

-- '올바른' 방법을 시도합니다.

    DROP TABLE IF EXISTS atc;
    CREATE TABLE atc ( c VARCHAR(11))  CHARACTER SET latin1 ;
    INSERT INTO atc (c) VALUES ('ÃÔäô');
    SHOW CREATE TABLE atc\G
    SELECT c, HEX(c) FROM atc;   -- note the latin1 encoding
    ALTER TABLE atc CONVERT TO CHARACTER SET utf8;
    SHOW CREATE TABLE atc\G   -- column and table are utf8
    SELECT c, HEX(c) FROM atc;   -- now utf8

mysql> 
mysql> -- Try the 'right' way:
mysql> 
mysql> DROP TABLE IF EXISTS atc;
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE TABLE atc ( c VARCHAR(11))  CHARACTER SET latin1 ;
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO atc (c) VALUES ('ÃÔäô');
Query OK, 1 row affected (0.00 sec)

mysql> SHOW CREATE TABLE atc\G
*************************** 1. row ***************************
       Table: atc
Create Table: CREATE TABLE `atc` (
  `c` varchar(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

mysql> SELECT c, HEX(c) FROM atc;   -- note the latin1 encoding
+----------+----------+
| c        | HEX(c)   |
+----------+----------+
| ÃÔäô     | C3D4E4F4 |
+----------+----------+
1 row in set (0.00 sec)

mysql> ALTER TABLE atc CONVERT TO CHARACTER SET utf8;
Query OK, 1 row affected (0.03 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> SHOW CREATE TABLE atc\G   -- column and table are utf8
*************************** 1. row ***************************
       Table: atc
Create Table: CREATE TABLE `atc` (
  `c` varchar(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

mysql> SELECT c, HEX(c) FROM atc;   -- now utf8
+----------+------------------+
| c        | HEX(c)           |
+----------+------------------+
| ÃÔäô     | C383C394C3A4C3B4 |
+----------+------------------+
1 row in set (0.00 sec)

mysql> 

언급URL : https://stackoverflow.com/questions/48583756/what-is-the-default-server-characterset-in-mariadb-inside-the-swisscom-cloud-and