백업한 '게시물'의 SQL을 두번 넣고 싶은데, AI 값과 관련하여, wr_id 값을 자동으로 변경하는 방법이 있을까요?

백업한 '게시물'의 SQL을 두번 넣고 싶은데, AI 값과 관련하여, wr_id 값을 자동으로 변경하는 방법이 있을까요?

QA

백업한 '게시물'의 SQL을 두번 넣고 싶은데, AI 값과 관련하여, wr_id 값을 자동으로 변경하는 방법이 있을까요?

본문

 

기존 관리하던 그누보드 3개의 메뉴를, 1개의 메뉴로 통합하고자 합니다.

그랬더니, AI( auto_increment ) 문제에 직면하여, 도움을 부탁드립니다.

 

phpMyAdmin을 통하여 기존에 있는 SQL 백업으로, 아래와 같은 결과를 얻었습니다.

 

 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";

SET time_zone = "+00:00";

 

 

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8mb4 */;

 

--

-- 테이블 구조 `g5_write_news`

--

 

CREATE TABLE `g5_write_news` (

  `wr_id` int(11) NOT NULL,

  `wr_num` int(11) NOT NULL DEFAULT '0',

  `wr_reply` varchar(10) NOT NULL,

  `wr_parent` int(11) NOT NULL DEFAULT '0',

  `wr_is_comment` tinyint(4) NOT NULL DEFAULT '0',

  `wr_comment` int(11) NOT NULL DEFAULT '0',

  `wr_comment_reply` varchar(5) NOT NULL,

  `ca_name` varchar(255) NOT NULL,

  `wr_option` set('html1','html2','secret','mail') NOT NULL,

  `wr_subject` varchar(255) NOT NULL,

  `wr_content` text NOT NULL,

  `wr_link1` text NOT NULL,

  `wr_link2` text NOT NULL,

  `wr_link1_hit` int(11) NOT NULL DEFAULT '0',

  `wr_link2_hit` int(11) NOT NULL DEFAULT '0',

  `wr_hit` int(11) NOT NULL DEFAULT '0',

  `wr_good` int(11) NOT NULL DEFAULT '0',

  `wr_nogood` int(11) NOT NULL DEFAULT '0',

  `mb_id` varchar(20) NOT NULL,

  `wr_password` varchar(255) NOT NULL,

  `wr_name` varchar(255) NOT NULL,

  `wr_email` varchar(255) NOT NULL,

  `wr_homepage` varchar(255) NOT NULL,

  `wr_datetime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

  `wr_file` tinyint(4) NOT NULL DEFAULT '0',

  `wr_last` varchar(19) NOT NULL,

  `wr_ip` varchar(255) NOT NULL,

  `wr_facebook_user` varchar(255) NOT NULL,

  `wr_twitter_user` varchar(255) NOT NULL,

  `wr_1` varchar(255) NOT NULL,

  `wr_2` varchar(255) NOT NULL,

  `wr_3` varchar(255) NOT NULL,

  `wr_4` varchar(255) NOT NULL,

  `wr_5` varchar(255) NOT NULL,

  `wr_6` varchar(255) NOT NULL,

  `wr_7` varchar(255) NOT NULL,

  `wr_8` varchar(255) NOT NULL,

  `wr_9` varchar(255) NOT NULL,

  `wr_10` varchar(255) NOT NULL

) ENGINE=MyISAM DEFAULT CHARSET=utf8;


그 후에, 하단의 Insert문을 실행하였습니다.

 INSERT INTO `g5_write_news` (`wr_id`, `wr_num`, `wr_reply`, `wr_parent`, `wr_is_comment`, `wr_comment`, `wr_comment_reply`, `ca_name`, `wr_option`, `wr_subject`, `wr_content`, `wr_link1`, `wr_link2`, `wr_link1_hit`, `wr_link2_hit`, `wr_hit`, `wr_good`, `wr_nogood`, `mb_id`, `wr_password`, `wr_name`, `wr_email`, `wr_homepage`, `wr_datetime`, `wr_file`, `wr_last`, `wr_ip`, `wr_facebook_user`, `wr_twitter_user`, `wr_1`, `wr_2`, `wr_3`, `wr_4`, `wr_5`, `wr_6`, `wr_7`, `wr_8`, `wr_9`, `wr_10`) VALUES


(209, -208, '', 209, 0, 0, '', '공지', 'html1', 'Test', '<p> </p><p>테스트 파일 입니다</p>', '', '', 0, 0, 4, 0, 0, 'admin', '*D76DC854984274EC18DDE6026E2892C65AD4838F', '관리자', '*** 개인정보보호를 위한 이메일주소 노출방지 ***', '', '2017-05-05 16:52:47', 2, '2017-05-05 16:52:47', 'IP', '', '', '', '', '', '', '', '', '', '', '', '');


그 후에, 위에 굵게 칠해진 SQL 문을 1번 더 입력하였습니다. (테스트를 위함)
당연히, 전재조건은 테이블에 AI, PK를 걸지 않은 상태입니다. 

이 이후에, AI를 걸려고 하는데요.
4f20eb1b3a9aeeb039007509116e955a_1494144064_0286.PNG

페이지를 보니, 2개가 만들어졌는데 링크를 보니 wr_id 두개가 동일하게 되서,
데이터가 이렇게 들어가있기 때문에, wr_id와 wr_num을 다시 만들어줘야 하는 상황이 되었습니다.
(각각 다르게)

이 상태로 AI를 걸어서, 0부터 처음은 0, 나중은 1이 되었으면 하는데
저 위의 상황에서 아래와 같은 sql문을 입력하니

 

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- 테이블의 인덱스 `g5_write_news`
--
ALTER TABLE `g5_write_news`
  ADD PRIMARY KEY (`wr_id`),
  ADD KEY `wr_num_reply_parent` (`wr_num`,`wr_reply`,`wr_parent`),
  ADD KEY `wr_is_comment` (`wr_is_comment`,`wr_id`);

--
-- 테이블의 AUTO_INCREMENT `g5_write_news`
--
ALTER TABLE `g5_write_news`
  MODIFY `wr_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=210;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

 

 

4f20eb1b3a9aeeb039007509116e955a_1494144286_5137.PNG
 

 


이런 오류가 발생하더라고요.
보니까 이미 wr_id가 '1'인게 (사진에는 나와있지 않지만 데이터가 1부터 209까지 3번씩 들어가있다고 보시면 됩니다)
2개 이상이라서, PRIMARY 에 걸린다 <- 라는 뜻 같은데,
현재 wr_id를 무시하고, 0부터 있는 갯수만큼 자동으로  ai를 해주는 방법이 있을까요?


이 질문에 댓글 쓰기 :

답변 1

wr_id와 wr_num을 다시 만들어줘야 하는 상황이 되었습니다.

<--- 게시물 순서를 어덯게 나오게 하려는지 모르겠으나 wr_id, wr_num, wr_parent 모두 다시만들어 주어야 합니다

phpMyadmin에서 하는 것보다 아래 방법을 이용하세요

(다른 이름으로 게시판 복사를 해서 게시판 두개를 합치는 방법으로)

g4용이므로 g5용으로 수정해야 합니다


https://sir.kr/g4_tiptech/32643?sfl=mb_id%2C1&stx=kt7264






 

답변을 작성하시기 전에 로그인 해주세요.
전체 31
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT