2012-05-28 3 views
2

라이브 (호스팅) DB와 개발 (로컬) DB에 모두 테이블이 있습니다. 라이브 테이블에 많은 레코드를 가져 가고 싶습니다. 다음과 같이 내가 해왔 무엇MySQL 테이블 - 자르거나 자르지 않습니까?

은 다음과 같습니다

  1. 내보내기/가져 오기 다시 phpMyAdmin을을 사용하여 dev에 DB에 대한 라이브 테이블의 사본.
  2. C 배치 파일을 사용하여 새 데이터를 dev 테이블에로드합니다.
  3. phpMyAdmin을 사용하여 업데이트 된 dev 테이블의 복사본을 다시 라이브 DB로 가져 오기/가져 오기.

이 모든 것이 정상적으로 작동합니다.

문제는 다음과 같습니다. 라이브 테이블에서 레코드가 삭제 된 경우 1 단계는 "파일로 테이블 바꾸기"옵션을 선택한 경우에도 dev 테이블에서 레코드를 제거하지 않습니다. 이 레코드는 3 단계에서 실제 테이블에서 다시 생성됩니다.

내 질문 : 1 단계에서 가져 오기 전에 dev 테이블을 자르면 됩니 까? 내 가져 오기가 dev 테이블의 자동 증가를 실제 테이블과 동일한 지점으로 설정합니까? 아니면 물건을 무섭게 채우려하고 있습니까?

감사합니다.

편집 : 여기 테이블이 있습니다. (더 나은 형식을 가져올 수 없습니다, 죄송합니다.)

열 - 유형 - NULL -

cnum SMALLINT (6) 아니오
Unum의 SMALLINT (6) 아니오 1
cat_subject의 SMALLINT 기본값 (2) 아니오 0
cat_major SMALLINT (2) 없음 0
cat_minor의 SMALLINT (2) 아니오 0
cat_flavour의 문자 (1) 예 NULL 없습니다
unmod VARCHAR (255) 아니오

지수 :

키 이름을 입력 고유 포장 열 리티 정렬 널 코멘트

PRIMARY BTREE 예 아니오 cnum 2214 없음

답변

3

는 자르기없는 없습니다 MySQL의 테이블은 autonumber/identity 열을 재설정합니다. 스크립트가 자동으로 dev에서 자동 번호를 삽입하지 않으면 손에 중대한 문제가 발생할 것입니다.

일부 테이블 구조와 코드를 게시 할 수 있으면 몇 가지 코드로 더 나은 대답을 줄 수 있습니다.

UPDATE :

그냥 일련에와 MySQL에 대해 조금을 명확히합니다.나는 다음과 같은 쿼리 데이터를 삽입 한 경우

CREATE TABLE `testcust` (
`TestCustID` int(11) NOT NULL AUTO_INCREMENT, 
    `Name` varchar(32) DEFAULT NULL, 
PRIMARY KEY (`TestCustID`) 
) ENGINE=InnoDB; 

:

INSERT INTO `test`.`TestCust` 
(`TestCustID`, 
    `Name` 
) 
VALUES 
(
    NULL, 
'Pieter' 
); 

을 그리고 나는 이런 식으로 뭔가를 볼 것이다이 테이블에 *는 선택을 실행 다음과 같이 테이블을 생성 할 수 있습니다.

TestCustID  Name 
'1',   'Pieter' 

TestCustID를 지정하지 않았으므로 MySQl이 하나를 생성합니다. 나는 다음과 같은 삽입 쿼리를 실행 한 경우 :

INSERT INTO `test`.`TestCust` 
(`TestCustID`, 
    `Name` 
) 
VALUES 
(
    15, 
    'Pieter' 
); 

을 그리고 달렸다 선택은 * 테이블에 당신이 테이블을 절단하는 경우가 시작 (1에 TestCustID 재설정됩니다 그래서

TestCustID  Name 
'1'   'Pieter' 
'15'   'Pieter' 

을 볼 것이다 스크래치). 삽입 서술문에서 제작/라이브 시스템의 자 동 번호를 명시 적으로 지정하면 동기화되지 않는 삽입 문에서 자 동 번호를 지정하지 않으면 동기화됩니다.

희망을 조금 더 명확히하십시오.

+0

답장을 보내 주셔서 감사합니다. 게시물 형식을 테이블 형식으로 편집했습니다. 수동으로 자동 증가를 다시 설정할 수 있습니까? 필요한 경우 C 코드를 넣을 수는 있지만 문제가있는 곳이 어디인지는 확실하지 않습니다. 자동 증가가 맞으면 일괄 업로드가 잘 작동합니다. – Nick

+0

도움을 주셔서 감사합니다. – Nick

+0

두 번째 'Pieter'삽입을 한 후에 자동 증가가 어떻게 설정 되나요? 16이 될까요? – Nick

1

잘라낸 후 해당 기본 자동 증가 열을 내보내거나 가져올 필요가 없습니다. 나머지 열을 가져 오면됩니다. 자동 증분 열을 자동으로 관리합니다.

+1

그것이 문제입니다. 자 동수는 동기화 상태를 유지해야합니다. 따라서 생산 시스템에 틈이 생겨서 이러한 차이가없는 제품을 개발에 넣으면 동기화가 해제됩니다. – Namphibian

+0

테이블을 삭제하고 create table statement를 포함한 /를 사용하여 가져 오기하십시오. 프로덕션에서 내보낼 때와 마찬가지로 create table 문을 사용하여 구조체를 내 보내면 나중에 dev에서 복제본을 삭제 한 후 Dev에서 가져옵니다. 데이터를 동기화합니다. – manurajhada

관련 문제