테스트 사이트 - 개발 중인 베타 버전입니다

phpmyadmin 테이블 안전하게 교체방법있을까요 채택완료

북마크스 1년 전 조회 1,291

phpmyadmin 에보면 모든 테이블 겉은 utf8mb4_general_ci 으로 되어있는데

구조 눌러보면 속 알맹이는 utf8_general_ci 되어있는게 많다보니

속알맹이 일괄로 utf8mb4_general_ci 으로 바꾸고싶은데 혹시 안전하게 전체 변경 방법좀 알려주세요

 

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
glitter0gim
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년 전
감사합니다

댓글을 작성하려면 로그인이 필요합니다.

phpmyadmin에 일괄설정 옵션이 있습니다

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인