반응형
stackoverflow 에서 확인한 내용이다. http://stackoverflow.com/questions/4007014/alter-column-in-sqlite
충격이다... 그래서 이전에 썼던 삽질에서 ALTER TABLE CHANGE 가 안먹었던걸지도. ( MODIFY 였나?? )
어쨌던 stackoverflow의 답글들을 보면, ( Alter 에서 ) Add 만 있고 change 나 modify 가 없으니까, 만약 ALTER TABLE MODIFY 를 하려면
1. 테이블 백업
2. 테이블 스키마를 변경된 Create 로 재선언
3. 백업(덤프) 했던 테이블 데이터를 새 테이블에 다시 복사.
의 뻘짓을 하라고 한다. 그냥 답이 없다고 써있다.
일단, command line 말고 sqlite browser 쓰면 바뀌긴 하는데, 바뀐 건지 확인을 못 하겠다.
무슨소리냐면.. sqlite 는 기본적으로 5가지 데이터 타입( number, real, text.... 나머지 기억안남. 인터넷 뒤져봐라. ) 이외에 모든 형은 text 로 처리한다. 그래서 데이터 타입 잘못 넣어도, 엔간하면 작동함.
마무리를 못하겠다. 어쨌던 충격과 공포다.
PS : 위 링크의 스택오버플로우의 댓글을 모두다 읽어보면,
우회로를 사용하는 법이 있기는 있다. Alter table 을 뚫는 게 아니라, sqlite 의 테이블 스키마를 저장하는 테이블 자체에 직접 update 하는 방법같다. 내가 해 본 건 아니지만 혹시 필요한 사람이 있다면... 해 보고 되는지 아닌지 답글부탁. ( 본문 글에는 된다고 써있음 )
대략 아래와 같다.
This method worked for me, although to avoid situations in which the columns might be in a different order (i.e. from a previous ADD COLUMN command), I used: UPDATE SQLITE_MASTER SET SQL = replace(SQL, '[MyColumn] integer NOT NULL', '[MyColumn] integer NULL') WHERE NAME = 'MyTable'. Also, be careful not to run this as part of a transaction - it may prevent some of the earlier transaction commands from running. – Ross Aug 16 '13 at 14:58 |
무운을 빈다.
반응형
'프로그램' 카테고리의 다른 글
PNG, JPG, GIF, BMP 이미지 헤더 파일 엑셀 정리된 내용. (0) | 2016.12.30 |
---|---|
Windows 10 테스트하려면, 그냥 iso 구워서 테스트 해라. Windows 7 , 8 에서 업뎃하지마. (0) | 2016.12.03 |
SQLite 에서 DateTime 을 사용하려면, TEXT 대신 Unixtime 사용을 추천한다 (0) | 2016.06.23 |
SQLite Manager 프로그램을 사용할 경우, Modify 메뉴는 ALTER TABLE 과 다르게 동작한다. (0) | 2016.06.21 |
SQLITE 에는 TRUNCATE 가 없다. (0) | 2016.06.03 |