그누보드 DB 이전 오류... -..-a > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

그누보드 DB 이전 오류... -..-a 정보

그누보드 DB 이전 오류... -..-a

본문

사이트의 속도가 너무 떨어져서 그누보드 DB만 별도 서버로 이전하려고 하는데
문제가 생겼습니다. 호스팅회사의 그누보드는 4.0.22 MySQL에 올라가 있고
새로운 서버의 MySQL은 5.0.27 입니다. 아주 많이 차이가 나는 버젼이죠. -..-a
 
일단 그누의 첫번째 테이블에서부터 걸렸습니다.
 
--
-- Table structure for table `dc_item`
--
CREATE TABLE dc_item (
  no int(4) NOT NULL auto_increment,
  category varchar(255) NOT NULL default '',
  id varchar(255) NOT NULL default '',
  name varchar(255) NOT NULL default '',
  value varchar(255) NOT NULL default '',
  desc varchar(255) NOT NULL default '',
  UNIQUE KEY no (no),
  UNIQUE KEY id (id)
) TYPE=MyISAM;
 
오류는 ... 아래와 같습니다.
 
ERROR 1064 (42000) at line 70358: 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 'desc varchar(255) NOT NULL default '',
) TYPE=MyISAM' at line 7
  • 복사

댓글 전체

이전하는 table 이 많지 않으면 그냥 php 구문으로 만들어 보심도.. ^^

아래처럼.. ^^  php 만드세요. ^^ 호호호

1. 아래 구문처럼 테이블 생성하고요...

2. insert 구문은  버전 상관없이 삽입 될거여요. (
auto_increment primary key  이건 잡시 끄고서 삽입)

예)
  $db = db_connect();
  //설치db삭제후 재설치
  $DROP  =  "DROP TABLE m_basic";
  $db->query($DROP);
  $DROP  =  "DROP TABLE m_basic2";
  $db->query($DROP);
  $DROP  =  "DROP TABLE m_taa";
  $db->query($DROP);
  $DROP  =  "DROP TABLE m_tab";
  $db->query($DROP);
  $DROP  =  "DROP TABLE m_tac";
  $db->query($DROP);
  $DROP  =  "DROP TABLE m_tad";
  $db->query($DROP);
  $DROP  =  "DROP TABLE m_cr";
  $db->query($DROP);


  $query="CREATE TABLE IF NOT EXISTS $m_table (
                $m_id int unsigned not null auto_increment primary key,
                $m_gra int unsigned,
                $m_grb int unsigned,   
                $m_grc int unsigned,
                $m_grd char(20),
                $m_ta_skin char(60),
                $m_ta char(60) not null,
                $m_ta_id char(60) not null,
                $m_ta_name char(60) not null,
                $m_wra char(255),
                $m_wrb char(255),
                $m_wrc char(255),
                $m_ga  char(60),       
                $m_gb  char(60),       
                $m_gc  char(60),     
                $m_gd  char(60),       
                $m_ge  char(60),       
                $m_gf  char(60),         
                $m_gg  char(60),         
                $m_gh  char(60),         
                $m_gi  char(60),       
                $m_gj  char(60)
) type = InnoDB";
  $pass = $db->query($query);
MySQL 버전때문이 아니랍니다..
리눅스 MySQL 4.0 버전에서 윈도우즈 MySQL 5.2 버전의 서버로 이전 잘 되던데요...

다운 받은 SQL 파일을 EmEditer 로 열어서(열기전 인코딩맞추는것은 기본) 새이름으로 저장하시면서 CL+LF(windows) 로 설정 / MySQL 서버의 디폴트캐릭터셋에 맞춰서 설정하시고 저장하신뒤에 디비에 넣어주시면 잘 됩니다....^^
두가지 문제는 확인해서 고쳤어요.

- reserved keyword를 db를 설계할 때 썼다는거(desc라는 field명에서 문제가 생겼어요)

- 4.0.x 버젼의 MySQL이 있던 웹서버에서 5.0.x의 MySQL이 있는 서버를 connect 하니
  MySQL password hashing 문제가 생겨서... user의 password를 OLD_PASSWORD
  함수로 재설정 해줘야 하는거... (서버 웹과 DB서버로 분리했어요)

그리고 지금은 문제없던 g4_popular에서 중복된 컬럼이 나와서 해당 부분의 데이터를
보고 있어요. 기존 DB에는 문제가 없었는데... 왜 중복된 칼럼이라고 애러가 나오는지...

ERROR 1062 (23000) at line 1246618: Duplicate entry '2006-09-22--66.249.65.232' for key 2
아... OLD_PASSWORD 문제를 깜빡했네요...^^
OLD_PASSWORD 문제는 관리자 비밀번호만 phpmyadmin 에서 직접 바꿔서 로그인을 할수있게 해주고,
나머지는 회원들한테 비밀번호찾기로 떠넘기는게 좋지 않을까요?

버전업은 계속 될것이니 언젠가는 한번 겪고 넘어가야할일 일테니까요....^^
g4_popular 테이블을 repair 하고 중복되었다는 row 부근을 지우고
다시 loading했는데... Duplicate entry 가 계속나오고 있네요.
제 판단으로 더이상 중복된 row는 없는거 같은데. -..-a

g4_popular 테이블을 모두 비워버리니까 되네요. 왜 그런건지...-..-a
g4_popular 테이블... 이전에 문제네요.

OLD_PASSWORD는 mysql 서버를 띄울때 --old_password 옵션을 줘도 됩니다.
© SIRSOFT
현재 페이지 제일 처음으로