Karlie_dev
{SourceCode}
Karlie_dev
전체 방문자
오늘
어제
  • 분류 전체보기
    • 컴퓨터공학
    • JAVA
    • CSS
    • 자바스크립트
    • 파이썬
    • 스프링
    • DB
      • SQL
      • MySQL
      • Oracle
      • MongoDB
      • MariaDB
    • 형상관리
    • IDE
      • VS Code
      • Eclipse
    • 알고리즘
    • Server
    • AWS
    • 개발소리
    • Docker&Kubernetes
    • Cloud (클라우드)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • 도커
  • Spring
  • 스프링
  • AWS
  • oracle
  • 마리아디비
  • MongoDB
  • 자바스크립트
  • mariadb
  • k8s
  • 쿠버네티스
  • kubernetes
  • JavaScript
  • 스프링부트
  • nodejs
  • 오라클
  • 파이썬
  • Minikube
  • MySQL
  • docker

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Karlie_dev

{SourceCode}

DB/MariaDB

MariaDB SQL 오류 1005 해결

2018. 7. 20. 11:57
1
2
3
4
5
6
7
8
9
CREATE TABLE product_img (
    img_no         VARCHAR(10)    PRIMARY KEY,
    seq            VARCHAR(2)     NOT NULL,
    file_name      VARCHAR(100)   NOT NULL,
    upload_date    DATE           NOT NULL,
    file_ext       VARCHAR(10)    NOT NULL,
    FOREIGN KEY (img_no) REFERENCES product(product_no)
);
 
Colored by Color Scripter
cs


이렇게 테이블을 생성하려고 하니, 오류가 난다.

Foregin 키가 호환이 되지 않는다. 즉, product 테이블의 product_no와 img_no의 타입이 맞지 않는 줄 알았다.

그래서 product 테이블의 product_no도 확인해봤지만 VARCHAR(10)이 분명했다.



SQL 오류 (1005): Can't create table 'shop'.'product_img' (errno:150 "Foreign key constraint is incorrectly formed")



HeidiSQL 이라는 프로그램을 쓰고 있었는데, 여기서 product 테이블의 CREATE 코드를 볼 수 있었다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE TABLE `product` (
    `product_no`  VARCHAR(10) NOT NULL,
    `register_date`  DATE  NOT NULL,
    `edit_date`  DATE  NOT NULL,
    `third_cate_no`  SMALLINT(6) NOT NULL,
    `name`  VARCHAR(50) NOT NULL,
    `price`  SMALLINT(6) NOT NULL,
    `discount`  SMALLINT(6) NOT NULL,
    `stat`  VARCHAR(10) NOT NULL,
    `brand`  VARCHAR(20) NULL DEFAULT NULL,
    `view_count`  INT(11)  NOT NULL,
    `sales`  INT(11)  NOT NULL,
    PRIMARY KEY (`product_no`),
    INDEX `third_cate_no` (`third_cate_no`),
    CONSTRAINT `product_ibfk_1` FOREIGN KEY (`third_cate_no`) REFERENCES `category_3` (`cate_no`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
 
Colored by Color Scripter
cs


이 테이블을 생성하고 난 뒤에 데이터를 넣을 때 한글을 넣으려고 하니 안 되서, 테이블의 유니코드를 바꿔주는 작업을 했다.

하지만 ALTER 는 테이블 수정이니, 생성할 때 유니코드르 바로 맞춰주어야 한다.



ALTER TABLE table_name convert to charset utf8;

 



1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE product_img (
    img_no       VARCHAR(10)   PRIMARY KEY,
    seq          VARCHAR(2)    NOT NULL,
    file_name    VARCHAR(100)  NOT NULL,
    upload_date  DATE          NOT NULL,
    file_ext     VARCHAR(10)   NOT NULL,
    FOREIGN KEY (img_no) REFERENCES product(product_no)
)
COLLATE='utf8_general_ci'
;
 
Colored by Color Scripter
cs


테이블을 생성할 때 COLLATE='utf8_general_ci' 를 넣어주면 된다.

저작자표시 (새창열림)
    'DB/MariaDB' 카테고리의 다른 글
    • MariaDB(MySQL) 시퀀스 생성
    • MariaDB 재시작 및 중단
    Karlie_dev
    Karlie_dev

    티스토리툴바