database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 21507 게시물 읽기
No. 21507
지정되어 있던 FOREIGN KEY 속성을 없애려고 합니다. 도와주시겠어요?
작성자
mhj(pingma)
작성일
2004-04-16 15:37ⓒ
2004-04-16 15:43ⓜ
조회수
3,633

안녕하세요? REDHAT9에다가 MySQL을 사용하고 있는 초보자입니다.

 

처음 만들어 보는 FOREIGN KEY 지정에 문제가 생겨서 어렵게어렵게 테이블을 만들었는데,

1 : 1 matching 상황이 아니라 FOREIGN KEY 속성을 없애야 할 것 같습니다.

어떻게 해야 하는 건지 어떤 차례로 해야 하는 건지 알려 주시겠습니까?

 

제 상황을 설명드리면,

#/home/a라는사용자/A.sql 로 테이블을 만드는 내용을 저장한 후

#/home/a라는사용자/mysql -u root -p DATABASE명 < A.sql 해서 테이블을 MySQL에다 만들고

 

MySQL의 data directory인 ~/mysql/var에다가

DATA LOAD할 A.txt를 저장시키고

 

/home/a라는사용자/mysql -u root -p 실행후

mysql>LOAD DATA INFILE './A.txt' INTO TABLE A(테이블명); 하니

1:1 matching상황이 아니라 에러가 났습니다.

 

그래서 ALTER TABLE A(테이블명) DROP INDEX column명(index, foreign key설정된); 하니

ERROR 1025: Error on rename of './DATABASE명/#sql-d45_9' to './DATABASE명/A(테이블명)' (errno: 150)

 

mysql>DROP TABLE A(테이블명);

ERROR 1217: Cannot delete or update a parent row: a foreign key constraint fails

당연히 안 되겠죠?

 

참, 전 mysql 데몬을 mysql이라는 사용자가 돌리도록 해 두었습니다.(여기서의 a라는 사용자와 다름)

 

아직까지 초보라서 그런지 OS상에서랑 MySQL상에서랑 사용자, 권한, 그리고 설계상의 문제(서로 연관된 것) 등으로 인한 에러가 나면, 해결하기가 쉽지가 않습니다.

 

여기저기 찾아봐도 아직까지 제 실력으로는 산 너머 산이네요.

 

잘못 설정된 foreign key:index속성을 없애고 싶습니다. 단계별로 알려 주시면 감사하겠습니다.

 

쉽게 알고싶지 않은 마음에 고민 후,

고수님들의 도움 부탁드립니다.

 

감사합니다.

이 글에 대한 댓글이 총 9건 있습니다.

저도 이거 무척 궁금한 기능입니다.

 

한번 설정하고 나면 변경이 불가능 한건지 ?

 

고수님들 답변 좀 부탁드립니다.

쭈쭈아빠님이 2004-04-16 18:01에 작성한 댓글입니다. Edit

 

mysql.net 에 보면 지우는 법 있는데.

constain 을 지우면 되는데..

지금 mysql.net 홈피가 안뜨네요.

좀 있다가 찾아서 올려 드릴께요.

김욱진(bloodline)님이 2004-04-17 13:32에 작성한 댓글입니다.
ALTER TABLE yourtablename
    DROP FOREIGN KEY fk_symbol
fk_symbol 이 뭐냐 하면 
CREATE TABLE `estimate` (
  `est_num` int(10) unsigned NOT NULL auto_increment,
  `est_ps` text NOT NULL,
  PRIMARY KEY  (`est_num`),
  KEY `est_level` (`est_level`),
  CONSTRAINT `0_666` FOREIGN KEY (`est_level`) REFERENCES `estimate_level` (`level_num`)
) TYPE=InnoDB COMMENT='주문서 작성 테이블' AUTO_INCREMENT=301 ;

여기서 fk_symbol 은 0_666 입니다. SQL 로 백업 해보면 나오고 다른 방법도 있을겁니다.
 
김욱진(bloodline)님이 2004-04-17 13:41에 작성한 댓글입니다.

우선 친절한 답변 감사드립니다.

님께서 말씀하신대로라면, mysqldump를 이용해서 백업파일을 만들어 포린키에 주어진 어떤 고유값을 확인 후 drop시키라고 하시는것 같습니다.(맞나???)

그런데, 제가 아직 초보라서 그런지 접근 권한 등의 문제로 에러가 자꾸 발생하고 있습니다. (제가 알고 있는 chown, chgrp으로 그리고, chmod로 최대한 others까지 7로 주었는데 ㅜ.ㅜ) mysql명령어(mysqldump)를 쓸 수 있는 권한의 사용자와 var(제가 지정해 둔 mysql db방)의 data, ~.frm 파일들의 접근 등에 문제가 자꾸 발생됩니다.

 

주말엔 리눅스를 사용할 수 없는 상황이라 월욜에 재시도 후, 또 다시 도움이 필요하면 에러문과 함께 또 염치불구하고 도움 요청드리겠습니다.

초보자라 그런지 테이블 만드는데 에러나고,

잘못 설계된 테이블 삭제시키는 데 에러나고 그런 웃어야 할 지, 울어야 할 지 모를 그런 상황이 자꾸 발생합니다.

암튼 모든 분께 감사드리고 좋은 주말되세요. ^.~

mhj(pingma)님이 2004-04-17 17:25에 작성한 댓글입니다.

김욱진님께서 설명하신 방법이 맞구요.

팁을 알려드리자면,

 

Foreign Key ID를 알아야 지울 수 있는데, 문제는 아시다시피 fk_symbol이 테이블이 생성 될 때, MySQL에서 부여하는 ID라는 것이죠. 따라서 김욱진님께서는 mysqldump로 보라고 하셨는데요.

 

mysql> SHOW CREATE TABLE table_name \G

 

이렇게 알 수도 있습니다.

(쿼리 끝을 ; 보다 \G로 주시는게 결과를 확인하기 쉬우실 것입니다.)

따라서, dump를 뜨실 필요가 없습니다.~~~

허정수(wertyu)님이 2004-04-17 17:38에 작성한 댓글입니다.

저도 궁금했던것인데.. 의외로 간단한 문제였군요.

감사 드립니다.

쭈쭈아빠님이 2004-04-17 21:13에 작성한 댓글입니다. Edit

아.. 포링키 ID 를 알아 내는  저런 간단한 방법이 있었네요.
저도 다른 방법이 있을거라고 생각은 했었습니다만...

제가 phpMyadmin 이라는 프로그램을 자주 사용해서 맨날 덤프 떠서 사용했었지요.
저걸로 자동 포링키 삭제 프로그램도 쉽게 제작이 가능할꺼 같네요.

감사합니다.

김욱진(bloodline)님이 2004-04-18 12:18에 작성한 댓글입니다.

맞습니다.

제가 옛날에 서버가 10대 정도 있엇고, 10대 서버에 모두 동일한 schema로 테이블이 있었는데 문제는 foreign key ID가 서버에서 부여하는 것이라서, 서버 마다 모두 달랐었죠.

 

스크립트 작성으로 한번에 해결했죠~~

허정수(wertyu)님이 2004-04-18 21:02에 작성한 댓글입니다.

덕분에 잘 했습니다. 감사합니다.

 

load data하다가 권한이랑 errorcode 13인가 접근 문제라고 봐서 chmod나 chown, chgrp랑 file_priv, grant 써 보고 열심히 헤맸더니만, 파일 경로상의 문제였나 봅니다. 정말 왕초보라 그런지 아무것도 아닌 일에 삽질 여러날 하고 있습니다. ㅡㅡㅋ

 

열심히 삽질하다가  또 질문드리겠습니다.

 

감기조심하시고 봄향기 가득한 한 주되세요.

감사합니다. (--)(__)

mhj(pingma)님이 2004-04-19 17:08에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
21511마지막으로 입력된 필드명 구하기... [1]
김민수
2004-04-20
930
21510telnet으로 접속시 문제점 [1]
이승용
2004-04-19
1101
21508MySQL 책 보다가.. 테이블 분리에 대해서.. [6]
최해길
2004-04-16
2386
21507지정되어 있던 FOREIGN KEY 속성을 없애려고 합니다. 도와주시겠어요? [9]
mhj
2004-04-16
3633
21506[질문] group by... [3]
김대근
2004-04-14
1326
21505가상 필드를 만들어서 임의의 데이터를 넣을수 있나요? [5]
snagwoon
2004-04-14
4143
21504[질문]오라클 -> mysql 포팅... [1]
김대근
2004-04-14
1210
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다