답변 2개
채택된 답변
+20 포인트
1년 전
※ 우선, 백업 - , DB의 중요성을 인지하고 신중히 진행하세요. - 꼭 필요하가?하는 고민 한 번 하시길~~
※ DB가 더 많은 문자를 지원 하게 하시려는 것인가요?
-- 고민을 좀 하시고 시도 하세요.
♠ 구체적인 개요를 설명 하자면 ;
-- 백업 우선 > SQL 쿼리를 작성 > 쿼리를 실행( 직접실행, 반복실행 ) > 파일 포맷을 설정 > 옵션 활성
! phpmyadmin 접속 > DB 선택 > 내보내기 > SQL 형식 내보내기(빠른내보내기) = 백업
! 쉘에서는 mysqldump 사용 = 백업
</p>
<p>mysqldump -u 사용자 이름 -p 데이터베이스 이름 > backup할 DB 이름.sql
! 문자셋을 변경하는 쿼리
</p>
<p>USE your_database_name;</p>
<p>ALTER TABLE 테이블명 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
! phpmyadmin에서 sql 탭을 한 개씩 변경 하는 경우 - 쿼리 직접 실행
</p>
<p>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에서 반복 실행
</p>
<p>SET @schema = 'DB-name';</p>
<p>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';</p>
<p>
! 포멧 설정, 옵션 활성
</p>
<p>SET GLOBAL innodb_file_format = 'Barracuda';
SET GLOBAL innodb_large_prefix = 1;
♣ 모든 테이블 일괄 실행 : PHP 스크립트
</p>
<p><?php
$mysqli = new mysqli("localhost", "username", "password", "your_database_name");</p>
<p>if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}</p>
<p>$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";
}
}</p>
<p>$mysqli->close();
?></p>
<p>
utf8mb4_general_ci로 일괄 변경
로그인 후 평가할 수 있습니다
답변에 대한 댓글 1개
�
북마크스
1년 전
감사합니다
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인