데이터베이스 실습 에러 코드

김병훈·2021년 9월 9일
0

데이터베이스론

목록 보기
4/11

Error Code: 1046. No database selected Select the default DB to be used by double-clicking its name in the SCHEMAS list in the sidebar.

Error Code: 1054. Unknown column 'empid' in 'field list'

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Error Code: 1051. Unknown table 'operation_09_09.new_emp'

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOREIGN KEY (deptid) REFERENCES dept(deptid) )' at line 9

Error Code: 1146. Table 'operation_09_09.dept' doesn't exist

Error Code: 3819. Check constraint 'employee_chk_1' is violated.

  • CREATE TABLE EMPLOYEE (
    EMPNO int NOT NULL,
    EMPNAME char(10) DEFAULT NULL,
    TITLE char(10) DEFAULT '사원',
    MANAGER int DEFAULT NULL,
    SALARY int DEFAULT NULL,
    DNO int DEFAULT '1',
    PRIMARY KEY (EMPNO),
    UNIQUE KEY EMPNAME (EMPNAME),
    KEY MANAGER (MANAGER),
    KEY DNO (DNO),
    CONSTRAINT employee_ibfk_1 FOREIGN KEY (MANAGER) REFERENCES EMPLOYEE (EMPNO),
    CONSTRAINT employee_ibfk_2 FOREIGN KEY (DNO) REFERENCES DEPARTMENT (DEPTNO) ON DELETE CASCADE,
    CONSTRAINT employee_chk_1 CHECK ((SALARY < 6000000)),
    CONSTRAINT employee_chk_2 CHECK ((DNO in (1,2,3,4)))
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

  • Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (company.employee, CONSTRAINT employee_ibfk_1 FOREIGN KEY (MANAGER) REFERENCES employee (EMPNO))

  • Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (vanilla.#sql-1c10_73, CONSTRAINT document_ibfk_1 FOREIGN KEY (user_id) REFERENCES _user (id))
  • 상황
@ document라는 테이블과 _user라는 테이블이 있다.

@ _user는 사용자를 나타내고, document는 사용자가 쓴 글을 나타내는 테이블이다.

@ _user의 PK는 id이다.

@ document와 _user 모두 몇 개의 튜플이 존재한다.

@ 이후에 document에 user_id라는 컬럼을 추가했다.

@ document의 user_id를 외래키로 설정하려고 시도했으나 에러코드를 만났다
  • 원인
document의 user_id라는 컬럼은 처음부터 있던 게 아니라 나중에 추가한 컬럼이다. 
따라서 document 테이블에 있던 기존 튜플에는 user_id 컬럼은 비어있는 상태였다. 
이 상황이 참조 무결성을 위배한 것 같다.

 

참조 무결성이란 데이터베이스의 신념 중 하나로, 
예를 들어 A 테이블의 a 컬럼이 B 테이블의 b 컬럼을 참조하고 있다면 
이 두 컬럼은 항상 값이 일관되어야 함을 말한다. 
즉, B 테이블에서 값을 변경시켰다면 이 변경사항이 A 테이블에도 적용되어야 한다.
 또한 B 테이블의 b 컬럼에 없는 값을 A 테이블 a 컬럼에서 가질 수 없다. 
 아래의 그림은 참조 무결성이 깨진 예시이다.
  • SHOW CREATE TABLE EMPLOYEE
CREATE TABLE `EMPLOYEE` (
  `EMPNO` int NOT NULL,
  `EMPNAME` char(10) DEFAULT NULL,
  `TITLE` char(10) DEFAULT '사원',
  `MANAGER` int DEFAULT NULL,
  `SALARY` int DEFAULT NULL,
  `DNO` int DEFAULT '1',
  PRIMARY KEY (`EMPNO`),
  UNIQUE KEY `EMPNAME` (`EMPNAME`),
  KEY `MANAGER` (`MANAGER`),
  KEY `DNO` (`DNO`),
  CONSTRAINT `employee_ibfk_1` FOREIGN KEY (`MANAGER`) REFERENCES `EMPLOYEE` (`EMPNO`),
  CONSTRAINT `employee_ibfk_2` FOREIGN KEY (`DNO`) REFERENCES `DEPARTMENT` (`DEPTNO`) ON DELETE CASCADE,
  CONSTRAINT `employee_chk_1` CHECK ((`SALARY` < 6000000)),
  CONSTRAINT `employee_chk_2` CHECK ((`DNO` in (1,2,3,4)))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

Error Code: 2013. Lost connection to MySQL server during query

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE emp ( empid int(10) NOT NULL, ename char(20), deptid int(5), ' at line 8

0 row(s) affected, 1 warning(s): 1681 Integer display width is deprecated and will be removed in a future release.

profile
블록체인 개발자의 꿈을 위하여

0개의 댓글