everydayminder
2038년 버그란? 도대체 2038년에 어떤 일이 생기길래 2038년 버그라는 말이 있고, Y2K38이라는 단어까지 존재하는 것일까? 예전에 1999년에서 2000년으로 넘어갈 무렵에 전산상 표기할 수 있는 자릿수가 변경되면서 발생하는 문제를 통칭하여 Y2K 문제라고 불렀었다. 90년대 후반까지는 년도를 두자리로 부르는 것이 관례적이었는데, (마치 우리가 학번을 부르면 끝에 두 자리만 부르고, 주민등록 번호상으로도 년도는 뒤의 두 자리만 주로 쓰듯이) 1999년에서 2000년도로 넘어가면서 99->00으로 바뀌는 과정에서 00을 2000으로 인식하느냐, 1900으로 인식하느냐의 문제가 발생했었다. 그리고, 이름으로도 유추할 수 있듯이 유사한 문제가 2038년에 발생하려고 한다. 왜 그럴까? 2038년 버..
MySQL에서 자동으로 증가하는 ID를 PK로 사용하기 위해 auto_increment를 사용한다. 그러면, PostgreSQL에서는 이와 동일한 기능을 어떻게 사용할까? MySQL에서의 auto_increment를 PostgreSQL에서는 어떻게 쓸까? 몇 가지 방식으로 해당 요구사항을 만족시킬 수 있다. MySQL에서 어떤 id를 자동 증가하게 하고, 그 값을 PK로 지정하기 위해 다음과 같은 방식으로 표현한다. CREATE TABLE IF NOT EXISTS `students` ( id int(6) AUTO_INCREMENT, ... PRIMARY KEY (id) ); 이와 동일하게 하려면, PostgreSQL에서는 다음과 같은 방법이 사용가능하다. Sequence 사용 오라클에서 Sequence와..
어찌보면 psql은 pgadmin과 더불어 Postgresql의 공식 client 중 하나이다. 그리고, 생각보다 많은 기능을 준다. CLI라는 점 때문에 무시할 법도 하지만, 오히려 psql 고유의 커맨드 때문에 이것을 더 선호하는 순간이 있기도 하다. Postgresql에 접속하기 위한 psql 옵션들 접속에 사용하는 주요 파라미터는 다음과 같다. -d: 데이터베이스 -h: 호스트 또는 IP -p: 포트 -U: 사용자계정 -w: 패스워드 없이 접속 -W: 패스워드 확인 help를 실행하자 psql에 접속한 후에 help를 실행하면 다음과 같이 안내 메시지가 뜬다. postgres=# help You are using psql, the command-line interface to PostgreSQL...
Docker 기반 Postgresql 설치하기 Docker를 사용하여 Postgresql을 설치하는 방법을 정리한다. docker-compose.yml YAML 파일의 기본 골격을 다음과 같이 작성한다. version: "3" services: db: image: postgres:latest container_name: postgres restart: always ports: - "5432:5432" environment: POSTGRES_USER: "${DB_USER_ID}" POSTGRES_PASSWORD: "${DB_USER_PASSWORD}" volumes: - ${POSTGRES_HOME_DIR}/data/:/var/lib/postgresql/data 파일내 변수로 선언한 내용은 .env에 작성..
PostgreSQL을 설치한 머신내에는 psql이 기본적으로 설치가 되어 있겠지만, 리모트로 접속해야 하는 경우는 별도로 설치해 줘야 한다. 여러 GUI 기반 client들도 많지만, 간단하게 보거나 명령어로 손쉽게 조회해 보려면 psql도 충분할 경우가 많다. 특히 기본 메타 정보 등을 조회하는 명령어는 범용 GUI에서는 지원하지 않기 때문에, psql 나름의 장점이 있다. 맥북에서 psql 설치하기 다음과 같이 libpq를 설치한다. $ brew install libpq libpq 설치가 완료되었다면, $ brew link --force libpq 를 실행하여 심볼릭 링크를 생성한다. Linking /usr/local/Cellar/libpq/13.2... 372 symlinks created. If ..
쿼리로 테이블 이름 조회하려면? 테이블 이름을 조사할 일이 있을 때, DB Client에서 조회하는 것이 불편할 때가 있다. 쿼리로 테이블 이름을 추출하려면 어떻게 할까? 주요 DB별로 테이블 정보를 조회하는 쿼리는 다음과 같다. MySQL SELECT table_name FROM information_schema.tables; PostgreSQL SELECT RELNAME AS TABLE_NAME FROM PG_STAT_USER_TABLES; Oracle SELECT * FROM all_all_tables; SELECT * FROM tabs; MS-SQL SELECT * FROM INFORMATION_SCHEMA.TABLES; 간편하게 온라인으로 SQL Query 실행해 보기 베경 DB가 설치되어 있고..