728x90
반응형
MySQL에 dump 파일을 import 했는데,
내 MySQL의 character, collation은 UTF8이지만
dump한 스키마의 모든 character, collation은 euckr_korean_ci여서 에러가 생길 것 같아서 미리 변경한다.
1. 데이터베이스 character, collation을 UTF8로 변경
/* 데이터베이스 utf8 변경 */
ALTER DATABASE 데이터베이스 CHARACTER SET utf8 COLLATE utf8_general_ci;
2. 테이블 및 컬럼 character 변경
ALTER TABLE 테이블 CONVERT TO CHARACTER SET utf8;
3. 외래키가 있는 경우 character 변경하는 법
테이블 중 외래키의 관계가 있는 경우는 다음의 단계를 따라야한다.
3-1. 외래키 끊기
-- 외래키 끊기 : 외래키를 받는 테이블
ALTER TABLE 외래키받는테이블 DROP FOREIGN KEY 외래키이름;
3-2. 외래키 받는 테이블의 character 변경
ALTER TABLE 외래키받는테이블 CONVERT TO CHARACTER SET utf8;
3-3. 외래키 주는 테이블의 character 변경
보통 PK로 설정되어 있는 테이블이다.
ALTER TABLE 외래키주는테이블 CONVERT TO CHARACTER SET utf8;
3-4. 외래키 재설정
ALTER TABLE 외래키받는테이블 ADD CONSTRAINT 외래키이름 FOREIGN KEY (외래키받는컬럼) REFERENCES 외래키주는테이블 (외래키주는컬럼);
4. 외래키 제약 조건 정보 & PK 조회
4-1. 외래키 제약 조건 정보 조회
FK가 어느 테이블의 어느 컬럼에서 가져왔는지 조회하기 위한 SQL 구문이다.
SELECT
TABLE_NAME,
COLUMN_NAME,
CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
TABLE_NAME = '외래키받는테이블'
AND CONSTRAINT_NAME = '외래키이름';
4-2. PK 조회
해당 테이블의 PK가 어떤 컬럼으로 설정되었는지 조회하는 SQL 문이다.
-- 기본 키 확인
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = '테이블'
AND CONSTRAINT_NAME = 'PRIMARY';
-- 고유 키 확인
SELECT COLUMN_NAME, CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = '테이블'
AND CONSTRAINT_NAME != 'PRIMARY';
▶ MySQL dump 파일 import 하는 방법
https://soheepark.tistory.com/197
▶ MySQL 5.7 재설치 & MySQL 자체의 character, collation 변경하기 (my.ini 수정)
https://soheepark.tistory.com/198
728x90
반응형
'[Language] > SQL' 카테고리의 다른 글
[Oracle/SQL] 시퀀스 조회, 생성, 삭제 / 시퀀스 데이터 삽입 (1) | 2024.11.07 |
---|---|
[Oracle] ORA-17800: 읽은 호출에서 -1을 가져왔습니다. (1) | 2024.07.02 |
SQL Error [933] [42000]: ORA-00933: SQL command not properly ended (0) | 2024.07.01 |
[Oracle] 결과값 표시 제한 (LIMIT, ROWNUM) (0) | 2024.07.01 |
[Oracle] NVL(컬럼명, '값') (0) | 2024.07.01 |