[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) 열