본문 바로가기
반응형

PostgreSQL4

[DB] Prepared Statement란? Prepared Statement는 데이터베이스 쿼리를 실행 할 때 쿼리를 미리 준비하고 실행할 때 필요한 값만 바인딩하여 사용하는 방식이다. 일반적으로 SQL 쿼리를 실행할 때와 달리, Prepared Statement는 SQL 구문과 데이터 값을 분리하여 처리한다. 이러한 방식은 SQL Injection 공격을 예방하고, 반복적인 쿼리 실행 성능을 향상시키는 등 여러 가지 장점을 제공한다. 일반 Statement의 동작 방식일반적으로 SQL을 실행할 때 다음과 같은 단계를 거친다.SQL 문자열 생성--예시SELECT * FROM users WHERE name = 'Alice'; 2. 파싱 (Parsing) : SQL 문법을 검사하고, 쿼리 구조를 분석한다. 3. 컴파일(Complie.. 2025. 6. 10.
[Prisma] $executeRawUnsafe와 $queryRawUnsafe() 차이 $executeRawUnsafe()와 $queryRawUnsafe()는 둘 다 Prisma에서 raw query를 직접 실행할 때 사용하는 함수이다. 하지만 당연히 차이가 있기 때문에 나눠진게 아니겠는가? 그 차이를 알아보자. $executeRawUnsafe()이 함수는 INSERT/UPDATE/DELETE 같은 실행만하고 결과를 받지 않는 쿼리에서 사용이 된다. 이 함수의 리턴 값은 쿼리에 의해 영향 받은 row의 수를 리턴하게 된다. 따라서 결과 데이터는 받을 수 없다. const count = await prisma.$executeRawUnsafe( `UPDATE "User" SET active = false WHERE last_login $queryRawUnSafe() 이 함수는 SELECT.. 2025. 4. 22.
[Golang] echo postgresql 연결 시 panic: sql: unknown driver "postgres" (forgotten import?) 문제 해결 새롭게 시작한 프로젝트에서 go 언어를 도입해봤다. 배우기 시작한지 1주일도 안됐지만 에러가 터져나오는데 데이터베이스로 postgresql을 선택한 뒤 연결 하려고 했다. package storage import ( "database/sql" "fmt" "log" "os" "github.com/joho/godotenv" ) var db *sql.DB func InitDB() { err := godotenv.Load() if err != nil { log.Fatal("Error loading .env file") } dbHost := os.Getenv("DB_HOST") dbPort := os.Getenv("DB_PORT") dbUser := os.Getenv("DB_USER") dbPass := os.G.. 2023. 11. 29.
[postgresql] ERROR: relation does not exist 테이블 명 대소문자 이슈 해결법 그 동안 MySQL만 쓰다가 이번 프로젝트에서 새롭게 postgresql을 사용하게 되었다. 테이블을 만들고 데이터를 넣은 뒤 select 문을 실행했다. 일단 boardCategory라는 테이블은 분명히 만들었고 분명히 존재한다. 그런데 왜 테이블이 존재하지 않는다는 것일까. 에러로그를 자세히 보면 난 쿼리를 'boardCategory'로 날렸지만 실제론 'boardcategory'로 쿼리가 실행되었다는 것을 알 수 있다. postgresql은 기본적으로 테이블명에서 대문자, 소문자 혼용일 경우 대소문자를 구분을 안하고 다 소문자로 받아들인다. 따라서 테이블 명에 " "를 씌워주어야 한다. 이 큰 따옴표는 쿼리를 해석할 때 대소문자를 구별하라는 식별자라고 할 수 있다. 즉 소문자만 있으면 써도 되고 안.. 2023. 6. 13.
반응형