[MariaDB, MySQL] 에러해결 : Multiple primary key defined


2개의 컬럼을 기본키로 설정하려 드니 에러가 나오더군요.

 

ERROR 1068 (42000): Multiple primary key defined


원인

저의 경우 filed1은 이미 primary key로 지정이 되어있었고, filed2를 추가로 primary key로 지정하려 했는데 위 에러가 뜨더라구요.

확인을 해보니 field2의 not null설정이 안되어 있어 일어나는 문제였습니다. (null가능 상태)

 

 

해결

위 에러가 나온다면 우선 설정하고 싶은 primary key의 값이 null이 가능한지 아닌지를 확인하시고,

null이 불가능한 상태에서도 변경이 이루어지지 않는다면, 기존에 설정된 primary key를 제거 후 다시 설정해주세요.

 

예) table에 field1, field2, field3가 있으며, field1이 primary key로 잡혀있을 때 field1과 field2를 묶어 primary ket로 설정하고 싶을 때

 

 - field2의 Null 허용 상태가 NO인지 YES인지 체크를 합니다.

desc [table name];

 -- 만약 filed2의 Null 허용 상태가 YES라면 NO로 변경해줍니다.

alter table [table name] modify [field name] [field type] not null;

 - table의 설정된 primary key를 제거해줍니다.

alter table [table name] drop primary key

- field1과 field2를 primary key로 지정합니다.

alter table [table name] add primary key([field1], [field2]);

생각보다 별거 아닌거가지고 에러를 많이 만나네요 ㅠㅠ

 

버전정보 (v1.0)

 - v1.0 2020.08.15 배포

 

* 저작권에 위반될 수 있는 컨텐츠(이미지, 동영상 등)나 게시글은 삭제되거나 수정될 수 있습니다.

* 문제의 여지가 될 수 있는 컨텐츠의 경우 댓글 달아 주시면 빠른 시일 내에 조치하도록 하겠습니다.

* Karzin은 항상 공부중입니다. 설명이 틀리거나 잘못된 부분이 있다면 의견내주시는대로 수정하도록 하겠습니다.

 

Karzin

abbeea@naver.com

 


[Mybatis, MariaDB, MySQL] 에러해결 : Table ~~~ doesn't exist


오.. 앞서 Mapper 관련 에러 게시글 작성 끝내고 바로 또 진행하면서 생긴 에러..!

Table ~~~ doesn't exist

테이블이 왜 없지 하고 봤더니... (이것도 결국 진짜 별거 아니었다고 하죠..)

 


저는 DB도 워낙 여러개를 다루다보니.. (Oracle, Tibero, Mysql, MariaDB는 기본이고 MongoDB, SQLite 등등..)

매번 헷갈립니다 ㅋㅋㅋㅋ (언어도 ㅋㅋㅋㅋㅋ)

이게 저거였는지 저게 이거였는지.. (혼용으로 인한 폐허)

덕분에 별거 아닌 문제를 많이 보게되는데, 이번에도 비슷한 별거아닌 문제네요 ㅋ;;

 

원인

종종 사용하는 Oracle에서는 대소문자를 딱히 구분하지 않아도 테이블의 검색이 가능했으나(어쩌면 옵션의 설정으로 바꿨을지도 모르구요),

아마 MariaDB도 옵션에서 설정을 해줄수 있는걸로 아는데, 제가 설치한 MariaDB에서는 대소문자를 구분하여 table 명을 검색합니다.

덕분에 없다고 나온거구요.

보통 Table ~~~ doesn't exist 에러가 나오면 테이블이 없다고 봐야하는데, 저는 분명히 만들었는데도 없다고 에러를 뿜어내면.. 뭐.. 원인은 대소문자 구분이죠. ㅎ..

 

해결

앞으로는 대소문자 구분해주는걸로 해결을 봤습니다.

옵션 변경을 해줄까 고민했는데, 나중에 대소문자 구분해서 쓰게 될 경우가 생길 것 같아서 패스했습니다.

 


음.. 에러를 만나 해결하는 건 즐겁지만, 

왜 이렇게 별거 아닌거에서 걸리는지...ㅋㅋㅋㅋㅋㅋ;;

 

버전정보 (v1.0)

 - v1.0 2020.08.06 배포

 

* 저작권에 위반될 수 있는 컨텐츠(이미지, 동영상 등)나 게시글은 삭제되거나 수정될 수 있습니다.

* 문제의 여지가 될 수 있는 컨텐츠의 경우 댓글 달아 주시면 빠른 시일 내에 조치하도록 하겠습니다.

* Karzin은 항상 공부중입니다. 설명이 틀리거나 잘못된 부분이 있다면 의견내주시는대로 수정하도록 하겠습니다.

 

Karzin

abbeea@naver.com

 


[Mysql, MariaDB] 계정 생성 및 권한 부여하기


 

Mysql 및 MariaDB에서 계정을 생성하고 권한을 부여하는 방법입니다.

 

 - root 권한으로 로그인

sudo mysql -u root -p

 > root 패스워드를 입력 후 로그인합니다.

 

 

 - 계정생성하기

 > 로컬 및 원격으로 접속이 가능한 계정 생성

create user 'USERNAME'@'%' identified by 'PASSWORD';

  -> username 부분에는 계정의 이름을, password 부분에는 계정의 암호를 입력합니다.

 

 > 로컬로만 접속이 가능한 계정 생성

create user 'USERNAME'@'localhost' identified by 'PASSWORD';

 

 

 - 생성한 계정에 권한을 부여할 DB 만들기

create database DBNAME default character set UTF8;

 > DBNAME 부분에 생성할 DB 명칭을 입력해주세요.

 > default charater를 utf8로 설정합니다.

 

 

 - 생성된 DB 확인

show databases;

 

 

 - 계정에 DB 권한 부여

grant all privileges on DBNAME.* to 'USERNAME'@'%';

 > 변경된 권한 적용

flush privileges;

 

 

 

 - 계정생성이 완료되면 생성된 계정으로 로그인이 가능

mysql -u USERNAME -p

 > 설정한 패스워드 입력 후 로그인

 > 권한 부여된 DB 확인

show databases;

 

+ Recent posts