[mysql] 데이터베이스, 테이블, 열의 데이터 정렬을 변경하는 방법은 무엇입니까?

데이터베이스가 latin1_general_ci현재 있고 데이터 정렬을utf8mb4_general_ci .

PhpMyAdmin에 데이터베이스, 테이블, 열의 데이터 정렬을 변경하는 설정이 있습니까? 하나씩 변경하지 않고?



답변

각 테이블을 개별적으로 변환해야합니다.

ALTER TABLE mytable CONVERT TO CHARACTER SET utf8mb4 

(이것도 열을 변환합니다) 또는로 데이터베이스를 latin1내보내고로 가져옵니다 utf8mb4.


답변

OP가 요청 한대로 여기에 기여하고 있습니다.

데이터베이스, 테이블, 열의 데이터 정렬을 변경하는 방법은 무엇입니까?

선택한 답변은 표 수준에서만 표시됩니다.


데이터베이스 전체를 변경 :

ALTER DATABASE <database_name> CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

테이블 당 변경 :

ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

테이블 수준에서 열에 대해서도 변경되므로 테이블 수준에서 변경하는 것이 좋습니다. 특정 열에 대한 변경은 특정 사례에 대한 것입니다.

특정 열의 데이터 정렬 변경 :

ALTER TABLE <table_name> MODIFY <column_name> VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;


답변

PHP 스크립트를 실행할 수 있습니다.

               <?php
                   $con = mysql_connect('localhost','user','password');
                   if(!$con) { echo "Cannot connect to the database ";die();}
                   mysql_select_db('dbname');
                   $result=mysql_query('show tables');
                   while($tables = mysql_fetch_array($result)) {
                            foreach ($tables as $key => $value) {
                             mysql_query("ALTER TABLE $value CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci");
                       }}
                   echo "The collation of your database has been successfully changed!";
                ?>


답변

사용할 수있는 테이블의 데이터 정렬을 개별적으로 변경하려면

ALTER TABLE mytable CONVERT TO CHARACTER SET utf8

전체 데이터베이스에 대한 기본 데이터 정렬을 설정하려면

ALTER DATABASE  `databasename` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

그렇지 않으면,

고토 PhpMyAdmin-> Operations (작업)> 정렬.

거기에 모든 기존 데이터 정렬이 포함 된 선택 상자가 있습니다. 여기에서 데이터 정렬을 변경할 수 있습니다. 따라서 여기에 데이터베이스 테이블 뒤에 새 열을 만드는 동안이 데이터 정렬이 이어집니다. 새 열을 만드는 동안 선택 데이터 정렬이 필요하지 않습니다.


답변

다음 쿼리는 모든 테이블의 모든 해당 열에 대한 데이터 정렬을 특정 유형으로 변경하는 ALTER 쿼리를 생성합니다 (아래 예에서는 utf8_general_ci).

SELECT concat
        (
            'ALTER TABLE ',
                t1.TABLE_SCHEMA,
                '.',
                t1.table_name,
                ' MODIFY ',
                t1.column_name,
                ' ',
                t1.data_type,
                '(' ,
                    CHARACTER_MAXIMUM_LENGTH,
                ')',
                ' CHARACTER SET utf8 COLLATE utf8_general_ci;'
        )
from
    information_schema.columns t1
where
    t1.TABLE_SCHEMA like 'you_db_name_goes_here' AND
    t1.COLLATION_NAME IS NOT NULL AND
    t1.COLLATION_NAME NOT IN ('utf8_general_ci');


답변

phpMyAdmin을 실행하는 경우 >> 데이터베이스 선택 >> 테이블 선택 >> “테이블 옵션”섹션의 “작업”탭으로 이동 >> 드롭 다운 목록에서 데이터 정렬을 선택할 수 있습니다 >> 그리고 {Go} 키를 누르면 화면 상단에 다음과 같은 메시지가 나타납니다.

SQL 쿼리가 성공적으로 실행되었습니다

그리고 대본

ALTER TABLE `tableName` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci 

그러나 기존 열의 데이터 정렬은 변경되지 않습니다. 이를 위해이 스크립트를 사용할 수 있습니다 (이 스크립트는 phpMyAdmin에서도 제공됨)

ALTER TABLE  `tableName` CHANGE  `Name`  `Name` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL


답변

여러 수준에서 기본 데이터 정렬을 설정할 수 있습니다.

http://dev.mysql.com/doc/refman/5.0/en/charset-syntax.html

1) 클라이언트 2) 서버 기본값 3) 데이터베이스 기본값 4) 테이블 기본값 5) 열