【비망록】MySQL로 문자화(RDS)

4818 단어 MySQLphpMyadminRDS

테이블의 일본어가 깨져 버린다.





원인은 MySQL(RDS)에 있습니다.
RDS의 파라미터 그룹에서 DB에서 이용하는 캐릭터 세트를 설정한 것 같습니다.
-character_set_client
-character_set_connection
-character_set_database
-character_set_results
-character_set_server

하지만 이미 DB로 설정된 파라미터 그룹은 AWS에서 변경할 수 없는 것 같습니다.
그래서 다음 방법으로 변경!

먼저 DB에 설정된 파라미터 확인


show variables like 'character_set%';

"character_set_database"에는 "latin1"이 사용됩니다.
이것을 "utf8"로 변경해야합니다.


테이블에 설정된 캐릭터 세트 확인



이미 작성된 테이블에도 캐릭터 세트의 설정이 이루어지고 있는 것 같습니다.
다음 명령으로 확인합시다.
show create table テーブル名;

"latin1"이 사용되고있는 것 같습니다.


캐릭터 세트 설정 변경



다음 명령을 실행합니다.
ALTER DATABASE totsuka_dev default character set utf8;

다시 확인하면 변경된 것을 알 수 있다고 생각합니다.


그러나, 이 이후 할 수 있는 테이블에 대해서 이 캐릭터 세트가 적응되기 때문에,
기존 테이블의 캐릭터 세트는 "latin1"로 남아 있습니다. .

그래서 테이블을 다시 만들자!

DB소프트웨어에는 기본 기존의 테이블을 작성하기 위한 SQL문을 export 할 수 있는 기능이 있으므로, 그것을 이용합시다!
(※카피라면 캐릭터 세트의 내용도 카피해 버리므로, 처음부터 작성할 필요가 있습니다.)
이번에는 phpMyAdmin을 사용합니다.
대상 테이블을 선택하고 내보내기 탭을 클릭합니다.


출력을 텍스트로 표시합니다.


이번에는 "구조"만 있으면 OK 이었으므로 "구조"를 선택합니다.
기존 데이터도 원한다면 "구조와 데이터"를 선택하십시오.
덧붙여서, "구조는 Create 문", "데이터는 Insert 문"으로 내보냅니다!


그리고는 실행 버튼을 클릭하는 것만!


화면에 다음과 같이 텍스트로 표시됩니다!


그리고 이것을 수정합니다.
-- テーブルの構造 `videos_search`--

CREATE TABLE IF NOT EXISTS `videos_search` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `videoId` varchar(20) DEFAULT NULL,
  `channelId` varchar(30) DEFAULT NULL,
  `title` varchar(250) DEFAULT NULL,
  `description` varchar(250) DEFAULT NULL,
  `publishedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

① 기존의 테이블명과 이름이 같으므로 임시 이름을 붙여 봅시다.
② 또, 마지막 행의 이하의 개소는 삭제합시다. 이미 디폴트로 「CHARSET」에 「utf8」을 설정하게 되어 있을 것이므로 괜찮습니다.
'DEFAULT CHARSET=latin1 AUTO_INCREMENT=6'
-- テーブルの構造 `videos_search`--

CREATE TABLE IF NOT EXISTS `videos_search2` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `videoId` varchar(20) DEFAULT NULL,
  `channelId` varchar(30) DEFAULT NULL,
  `title` varchar(250) DEFAULT NULL,
  `description` varchar(250) DEFAULT NULL,
  `publishedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

이 Create 문을 실행합시다!


작성한 테이블을 확인해 봅시다. 확인 방법은 여러 가지가 있지만,
이번에는 내보내기 화면에서 확인해 보겠습니다.


「CHARSET=utf8」이 되어 있군요!
그리고는 기존의 테이블을 삭제해, 새롭게 작성한 테이블명을 기존의 테이블명으로 변경하면 OK입니다!

이상, 수고하셨습니다!

좋은 웹페이지 즐겨찾기