2014-12-09 2 views
2

이전 MySQL 데이터베이스를 업데이트하고 다양한 테이블의 여러 열을 필요로하지 않습니다. 하지만 열을 제거하는 것보다는 일시적으로 열지 못하게하여 코드를 테스트하고 열 제거를 완료하기 전에 얼마나 많은 것이 손상되는지 확인하는 것이 좋습니다. 특정 열에 액세스하면 서버에 오류가 발생하도록 어떻게 알 수 있습니까?MySQL 테이블의 열을 어떻게 비활성화합니까?

+3

그냥 이름을 바꿀 수 있습니다 –

+0

^^ 바로. 코드가 이름으로 참조하면 코드가 실패합니다. 그러나 코드가'SELECT *'을 사용하고 거기에있을 것으로 기대한다면, 당신은 그것을 막을 수 없다. 열을 제거하면 나중에 실패합니다. ('SELECT *'를 피하는 한 가지 이유) –

+0

필자는 SELECT *의 함정을 결코 생각해 보지 못했습니다. 그 점을 지적 해 주셔서 감사합니다. 그리고 이름 바꾸기 아이디어는 좋으며 columnname1과 같습니다. 그러나 코드에서 함수를 주석으로 처리하는 것과 비슷한 컬럼을 "주석 처리"하는 방법이 있습니까? – myk

답변

0

테이블 oldname의 이름을 newname으로 변경하고 oldname을 사용하여 뷰를 만들 수 있습니다. 그보기는 열 제거 테이블처럼 보입니다. 만약에 약간 문제가 있으면. 당신은 단지 이름 테이블과 뷰를 변경합니다.

0

보기를 사용하는 것이 좋습니다. 예를 들어 필자는이 바이올린을 만들었습니다. http://sqlfiddle.com/#!2/a8947/2

두 가지 쿼리를 살펴보십시오. 하나는 당신이 필요하지 않은 컬럼 ("legacyData"라고 불렀다)이있는 테이블을 선택한다. 다른 뷰는 뷰를 선택합니다. 보기에서 "legacyData"열이 더 이상 존재하지 않는 것을 볼 수 있습니다.

테이블에서 작성하는 경우에는 작동하지 않을 것이라고 생각하지만 테이블에서 읽는다면보기가 실행 가능한 옵션입니다.

당신이 될 것입니다 그것을 밖으로 시도 생산에 걸릴 싶어 단계 :

  • 이 테이블 ('myTable에'예 'myTableDontUse'에)
  • 뷰가

    를 기반으로 만든 이름 바꾸기 새로 이름이 바뀐 테이블
  • 뷰를 이름
  • , 이름은 테이블의 원래 이름 그 일을함으로써 (이 예에서는 myTable에)

, 당신은 볼 수있는 테이블을 교체했습니다. 이 방법을 사용하면 응용 프로그램이 해당 테이블의 legacyData 필드에 액세스하고 있는지 확인할 수 있습니다. 그렇지 않은 경우보기를 제거하고 표의 이름을 바꾸고 해당 열을 삭제할 수 있습니다.

많은 데이터가있는 경우 일반적으로 성능이보기 좋지 않으므로주의하십시오. 비슷한 상황에서 뷰를 시작했지만 성능상의 이유로 (테이블에 2M + 행이 있음) 대신 트리거를 통해 채워진 일반 테이블로 변경했습니다.

관련 문제