phpmyadmin 테이블 안전하게 교체방법있을까요
본문
phpmyadmin 에보면 모든 테이블 겉은 utf8mb4_general_ci 으로 되어있는데
구조 눌러보면 속 알맹이는 utf8_general_ci 되어있는게 많다보니
속알맹이 일괄로 utf8mb4_general_ci 으로 바꾸고싶은데 혹시 안전하게 전체 변경 방법좀 알려주세요
답변 2
※ 우선, 백업 - , DB의 중요성을 인지하고 신중히 진행하세요. - 꼭 필요하가?하는 고민 한 번 하시길~~
※ DB가 더 많은 문자를 지원 하게 하시려는 것인가요?
-- 고민을 좀 하시고 시도 하세요.
♠ 구체적인 개요를 설명 하자면 ;
-- 백업 우선 > SQL 쿼리를 작성 > 쿼리를 실행( 직접실행, 반복실행 ) > 파일 포맷을 설정 > 옵션 활성
! phpmyadmin 접속 > DB 선택 > 내보내기 > SQL 형식 내보내기(빠른내보내기) = 백업
! 쉘에서는 mysqldump 사용 = 백업
mysqldump -u 사용자 이름 -p 데이터베이스 이름 > backup할 DB 이름.sql
! 문자셋을 변경하는 쿼리
USE your_database_name;
ALTER TABLE 테이블명 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
! phpmyadmin에서 sql 탭을 한 개씩 변경 하는 경우 - 쿼리 직접 실행
ALTER TABLE 테이블1 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE 테이블2 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
. . .
! mysql cli에서 반복 실행
SET @schema = 'DB-name';
SELECT CONCAT('ALTER TABLE ', table_name, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;')
FROM information_schema.tables
WHERE table_schema = @schema
AND table_type = 'BASE TABLE';
! 포멧 설정, 옵션 활성
SET GLOBAL innodb_file_format = 'Barracuda';
SET GLOBAL innodb_large_prefix = 1;
♣ 모든 테이블 일괄 실행 : PHP 스크립트
<?php
$mysqli = new mysqli("localhost", "username", "password", "your_database_name");
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
$result = $mysqli->query("SHOW TABLES");
while ($row = $result->fetch_array()) {
$table = $row[0];
$query = "ALTER TABLE `$table` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci";
if ($mysqli->query($query)) {
echo "Table $table successfully converted.\n";
} else {
echo "Error converting table $table: " . $mysqli->error . "\n";
}
}
$mysqli->close();
?>
utf8mb4_general_ci
로 일괄 변경
!-->!-->!-->!-->!-->!--> phpmyadmin에 일괄설정 옵션이 있습니다
답변을 작성하시기 전에 로그인 해주세요.