별거 아닌 걸로 삽질을 좀 많이 하다가 알아낸 거라 쓴다.
나처럼 삽질 하는 사람이 없길. 나무아미타불....( 응? )
1. mysql 의 alter.
일반적으로 테이블을 변경할 때에는, alter 를 쓴다.
그리고, table 의 column 중 하나의 이름을 바꾸는 명령은 다음과 같다.
> ALTER TABLE 테이블이름 CHANGE 바꿀필드이름 새필드이름;
근데, 여기서 함정인게, 이걸로 안바뀜. 문법은 맞지만, MYSQL에서는 안바뀐다.
결국 명령어 조합하다 알아낸 건데,
> ALTER TABLE 테이블이름 CHANGE 바꿀필드이름 새필드이름 필드속성값;
요렇게 해줘야 된다.
예를 들면 ,
> ALTER TABLE table1 CHANGE fieldold fieldnew;
이럼 안되고,
> ALTER TABLE table1 CHANGE fieldold fieldnew INT NOT NULL;
이따구로 '필드 이름 + 필드 속성값' 까지 같이 써 줘야함.
SQL 표준이 뭔지 살짝 궁금해졌지만, 삽질로라도 알아냈으니 종료.
2. TRANSACTION, ROLLBACK, COMMIT 은 INNODB 에서만 가능.
음. 이것도 좀 뻘짓한건데... 우선, MYSQL 에서 TRANSACTION 을 하려면 대략 다음과 같이 하게 된다.
> BEGIN -- 트랜잭션 시작.
> SELECT ...
> INSERT ...
> UPDATE ...
... 각종쿼리문
> COMMIT -- 성공했을때
> ROLLBACK -- 실패했을때
이상하게 자꾸 안되서 CONSOLE 의 메시지를 자세히 보니, WARNING 이 뜨더라.
혹시나 해서 SHOW WRANINGS 로 보니...
TRANSACTION 은 INNODB 에서만 된다는군.
뭔소리냐 하면, 위의 BEGIN ~ TRANSACTION 문장이 잘못된 게 아니고,
테이블 만들때 첨부터 테이블 속성을 INNODB 로 설정해야 한다는 말씀. 자세하게는
> CREATE TABLE IF NOT EXITS 테이블이름 ( .... ) ENGINE=InnoDB;
그렇다는군. 삽질 좀 했다.
'프로그램' 카테고리의 다른 글
라즈비안에서, chromium 브라우저 루트 권한 실행. (1) | 2014.09.16 |
---|---|
라즈베리파이 언어 설정 + 로케일 설정 + 키보드 배치 바꾸기 (6) | 2014.09.15 |
chromium 을 전체화면 모드( F11 누르면 나오는 화면 ) 에서 실행하는 방법. (2) | 2014.09.10 |
linux C 에서 transaction (0) | 2014.08.29 |
linux 에서 curl 컴파일 안 될 때. (0) | 2014.08.25 |