반응형
만들어진 테이블들:
mysql> create table DEPARTMENT (
    -> DEPT_CD varchar(10) not null,
    -> NAME varchar(30) not null,
    -> PHONE int(11) not null,
    -> primary key(DEPT_CD)
    -> );

desc RESERVATION;
+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| RESERVATION_ID | varchar(10) | NO   | PRI | NULL    |       |
| PATIENT        | int(13)     | NO   | MUL | NULL    |       |
| DEPARTMENT     | varchar(10) | NO   | MUL | NULL    |       |
| DOCTOR         | varchar(5)  | NO   | MUL | NULL    |       |
| DATE           | varchar(10) | NO   |     | NULL    |       |
| TIME           | varchar(10) | NO   |     | NULL    |       |
| TYPE           | varchar(20) | NO   |     | NULL    |       |
| GRANTED        | varchar(10) | NO   |     | NO      |       |
+----------------+-------------+------+-----+---------+-------+



발생한 에러:
mysql> alter table RESERVATION drop column DEPARTMENT;
ERROR 1025 (HY000): Error on rename of '.\db_project\#sql-d0_2' to '.\db_project\reservation' (errno: 150)



또다른 시도:
mysql> alter table RESERVATION drop foreign key DEPARTMENT;
ERROR 1025 (HY000): Error on rename of '.\db_project\#sql-d0_2' to '.\db_project\reservation' (errno: 152)


이 두 경우에 대한 문제의 원인분석:
(1) 일단 foreign key constraint부터 지운 후에 drop column을 하는 것이 정상적인 순서이다.
(2) 그런데 foreign key constraint를 내가 테이블 생성할 때에 지정해 주지 않았다.
(3) 따라서 내부적으로 MySQL이 직접 정해준 foreign key constraint의 이름을 알아내야 한다.


마지막으로 foreign key와 관려하여 에러난 상황을 자세히 보고 싶을 때:
mysql> SHOW INNODB STATUS;


그러면 중간쯤에서 아래와 같은 자세한 설명을 볼 수 있고, 거기서 contraint name을 찾을 수 있다.
------------------------
LATEST FOREIGN KEY ERROR
------------------------
091130 21:10:55 Error in foreign key constraint of table db_project/reservation:

there is no index in the table which would contain
the columns as the first columns, or the data types in the
table do not match the ones in the referenced table
or one of the ON ... SET NULL columns is declared NOT NULL. Constraint:
,
  CONSTRAINT "reservation_ibfk_2" FOREIGN KEY ("DEPARTMENT") REFERENCES "departm
ent" ("DEPT_CD") ON DELETE CASCADE


이제 foreign key constraint와 column name을 차례대로 지워주면 된다.
mysql> alter table reservation drop foreign key reservation_ibfk_2;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> alter table reservation drop column DEPARTMENT;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

반응형
블로그 이미지

Bryan_

,
반응형
테스트 환경: MS Visual Studio 2005 Professional (다른 버전에서는 작동여부를 알 수 없음)

파이어폭스에서 탭 전환을 하려다가 실수로 비주얼스튜디오에서 단축키를 누르면서 알게 된 몇몇 (왠지 쓸데없어 보이지만ㅋㅋ) 기발한 단축키들을 발견했다.
몇몇 키는 알고 있으면 코드 수정할 때 유용하게 쓰일 수도 있을 듯.. ^^


Ctrl + T:
커서 바로앞의 글자와 바로뒤의 글자 위치를 바꾸고, 커서도 바뀐 곳으로 넘어간다.

예) 1aaaaaaa 라고 입력해 두고, 1 바로 뒤에 커서를 둔 후에
Ctrl + T 를 세 번 누르면, aaa1aaaa 가 된다.


Shift + Ctrl + T:
특수문자(공백 포함)를 사이에 둔 양 옆의 문자열의 위치를 서로 바꾼다.
가장 적절한 용도는 operator를 사이에 두고 양쪽 변수의 위치를 바꾸는 게 아닐까 예상된다.

예) int myVariable = yourVariable ;
위의 구문에서, (맨끝 세미콜론은 제외하고) 밑줄 친 곳의 아무 곳에서나 커서를 두고 Shift + Ctrt + T를 누르면,
int yourVariable = myVariable; 로 바뀐다.

예2) 만약 맨 끝의 세미콜론 뒤에 커서를 두고 단축키를 누르면,
그 아랫줄에 있는 처음 보이는 어떠한 문자열과 위치가 바뀐다.


Ctrl + U:
커서 바로 뒤에 위치한 글자가 대문자인 경우, 소문자로 바꾼다.
커서 바로 뒤의 글자가 영어 대문자가 아닐 경우 아무 변화 없음.


Ctrl + L:
커서가 위치해 있는 라인 전체를 지운다.
이것은 유닉스의 vi에서 입력모드가 아닐 때 "dd"를 누르는 것과 같은 효과.


Ctrl + W:
커서가 위치해 있는 곳에 있는 곳의 '단어'를 선택한다.
기본적으로 공백, 콤마 등으로 구분되는 한 단어를 선택해 준다. 마우스 더블클릭과 같은 기능.
만약 특수문자와 공백의 조합으로만 된 문자열에서 단축키를 누르면, 공백으로 구분되는 특수문자들의 모임을 선택한다.
반응형

'Development' 카테고리의 다른 글

if-else vs. if-return: 코딩 스타일과 가독성의 차이  (1) 2017.03.28
블로그 이미지

Bryan_

,
반응형
(예) user 테이블에 있는 h_id 필드를 home 테이블의 기본키인 home_id와 외래키로 연결하고자 할 때:

mysql> ALTER TABLE user ADD CONSTRAINT
       -> h_id FOREIGN KEY(h_id)
       -> REFERENCES home(home_id) ON DELETE CASCADE ON UPDATE CASCADE;



반응형
블로그 이미지

Bryan_

,
반응형
일반적으로 JSP파일에서 한글을 직접 입력하고 싶을 때, 파일의 맨 위에
<%@ page contentType="text/html; charset=euc-kr" %> 이렇게만 써주면 한글이 문제없이 보이지만, Java에서 넘어오는 문자열이나 웹 주소를 통해 받는 파라미터는 모두 유니코드(UTF-8)이기 때문에 되도록이면 UTF-8로 통일해서 쓰는 것이 여러 모로 변환의 귀찮음도 줄일 겸 좋을 것 같다.


(1) 아파치 톰캣에서 설정할 부분:
<Connector port="8080" .../> 태그의 뒷부분에
useBodyEncodingForURI="true" URIEncoding="UTF-8"를 추가한다.
(예) <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" useBodyEncodingForURI="true" URIEncoding="UTF-8" />

<Connector port="8009" ... /> 태그의 뒷부분에도 똑같이 추가해 준다.
(예) <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" useBodyEncodingForURI="true" URIEncoding="UTF-8"/>


(2) JSP 파일에서 설정할 부분:
JSP파일의 시작 부분에 다음 줄을 추가한다. 또는 charset이 euc-kr로 되어 있을 경우 바꿔 준다.
<%@ page contentType="text/html; charset=UTF-8" %>


HTML 코드가 시작될 만한 곳 어딘가에 (위치가 큰 상관은 없어 보임) 아래 메타태그를 추가해 준다.
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>


(3) JSP 파일 자체의 포맷 확인:
사용하는 에디터에 따라서 텍스트파일의 저장방식이 다를 수 있다.
현재 버전(0.9)의 AcroEdit의 경우 사용자가 직접 유니코드로 변환 명령을 주지 않으면 유니코드로 저장하지 않는다.
파일을 저장할 때 반드시 유니코드(UTF-8)로 저장할 것.
반응형
블로그 이미지

Bryan_

,
반응형
(VS2005깔린 폴더)\VC\lib 에 필요한 라이브러리 복사,
VS2005 실행해서 프로젝트 열고,

 - 프로젝트 --> [프로젝트 이름] 속성...
 - 구성 속성 --> 링커 --> 입력
 - 오른쪽에 보이는 내용 중에 맨 위에 '추가 종속성' 옆에 입력칸에 원하는 라이브러리 파일을 띄어쓰기로 구분하여 써줄 것.

반응형
블로그 이미지

Bryan_

,