MySQL MySQL 5.7 부터는 기본 키(PRIMARY KEY)의 Null 값 사용하면 오류 표시
페이지 정보
본문
MySQL 기본 키, 고유 키 (PRIMARY KEY, UNIQUE KEY)
기본 키와 고유 키는 유일해야 합니다.
기본 키나 고유 키로 설정된 값은 고유해야 합니다.
기본 키는 primary key 로 값이 중복되면 안되고 NULL값을 허용하지 않습니다.
고유 키는 unique key 로 값이 중복되면 안되고 NULL값을 허용합니다.
MySQL 5.7 이상부터는 기본 키(PRIMARY KEY)의 Null 값을 지원하지 않습니다.
5.6 까지는 null 이어도 오류 없이 실행이 되었지만, 5.7 부터는 작동없이 에러를 표시합니다.
Columns in a PRIMARY KEY must be NOT NULL, but if declared explicitly as NULL produced no error. Now an error occurs.
For example, a statement such as CREATE TABLE t (i INT NULL PRIMARY KEY) is rejected.
The same occurs for similar ALTER TABLE statements. (Bug #13995622, Bug #66987, Bug #15967545, Bug #16545198)
MySQL 5.6 이하에서 사용하던 습관
CREATE TABLE IF NOT EXISTS `banner_side` (
`bn_id` int(11) NULL AUTO_INCREMENT,
`bn_sort` int(11) NOT NULL DEFAULT '0',
`bn_subject` varchar(255) NOT NULL DEFAULT '',
`bn_use` tinyint(4) NOT NULL DEFAULT '0',
`bn_datetime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`bn_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
MySQL 5.7 이후 사용해야할 습관
CREATE TABLE IF NOT EXISTS `banner_side` (
`bn_id` int(11) NOT NULL AUTO_INCREMENT,
`bn_sort` int(11) NOT NULL DEFAULT '0',
`bn_subject` varchar(255) NOT NULL DEFAULT '',
`bn_use` tinyint(4) NOT NULL DEFAULT '0',
`bn_datetime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`bn_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
참고자료
http://kb.globalsoft.co.kr/web/web_view.php?notice_no=183
https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-3.html
기본 키와 고유 키는 유일해야 합니다.
기본 키나 고유 키로 설정된 값은 고유해야 합니다.
기본 키는 primary key 로 값이 중복되면 안되고 NULL값을 허용하지 않습니다.
고유 키는 unique key 로 값이 중복되면 안되고 NULL값을 허용합니다.
MySQL 5.7 이상부터는 기본 키(PRIMARY KEY)의 Null 값을 지원하지 않습니다.
5.6 까지는 null 이어도 오류 없이 실행이 되었지만, 5.7 부터는 작동없이 에러를 표시합니다.
Columns in a PRIMARY KEY must be NOT NULL, but if declared explicitly as NULL produced no error. Now an error occurs.
For example, a statement such as CREATE TABLE t (i INT NULL PRIMARY KEY) is rejected.
The same occurs for similar ALTER TABLE statements. (Bug #13995622, Bug #66987, Bug #15967545, Bug #16545198)
MySQL 5.6 이하에서 사용하던 습관
CREATE TABLE IF NOT EXISTS `banner_side` (
`bn_id` int(11) NULL AUTO_INCREMENT,
`bn_sort` int(11) NOT NULL DEFAULT '0',
`bn_subject` varchar(255) NOT NULL DEFAULT '',
`bn_use` tinyint(4) NOT NULL DEFAULT '0',
`bn_datetime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`bn_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
MySQL 5.7 이후 사용해야할 습관
CREATE TABLE IF NOT EXISTS `banner_side` (
`bn_id` int(11) NOT NULL AUTO_INCREMENT,
`bn_sort` int(11) NOT NULL DEFAULT '0',
`bn_subject` varchar(255) NOT NULL DEFAULT '',
`bn_use` tinyint(4) NOT NULL DEFAULT '0',
`bn_datetime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`bn_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
참고자료
http://kb.globalsoft.co.kr/web/web_view.php?notice_no=183
https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-3.html
댓글목록
등록된 댓글이 없습니다.