1
는DB 핸들이 수명이 긴 을 많은 goroutines 사이에 공유 될 의미와 같은 DB를 닫습니다 드물다.
main
함수 내에서 그것을
defer db.Close()
전화를 제외하고이 방법의 사용 사례가 있습니까?
는DB 핸들이 수명이 긴 을 많은 goroutines 사이에 공유 될 의미와 같은 DB를 닫습니다 드물다.
main
함수 내에서 그것을
defer db.Close()
전화를 제외하고이 방법의 사용 사례가 있습니까?
데이터베이스를 절대로 닫지 않습니다. 그것을 주요하게 연기하는 것은 상처를주지 않을 것이다. 그러나 그것은 아무 것도 도움이되지 않을 것이다. 메인의 끝은 프로그램의 끝이고 메인이 끝나면 OS가 청소를합니다.
편집 :
그래서 우리는 데이터베이스/SQL 패키지의 공개 API에 필요한 이유는 무엇입니까?
데이터베이스를 닫으려면 데이터베이스를 다시 사용하지 않는 것이 좋습니다. 프로그램 종료시 완료 될 모든 정리를 수행하지만 프로그램은 계속 실행할 수 있습니다.
왜 우리는'database/sql' 패키지의 공용 API에서 그것을 필요로합니까? – tarrsalah
@ tarrsalah - DB에 오래 지속되는 연결 요구 사항이 없다면 닫을 수 있습니다. 그렇지 않으면 메인 종료시 정리됩니다. 더 중요한 것은 쿼리와 트랜잭션이 적절하게 닫혀 불필요하게 연결이 누출되지 않도록하는 것입니다. –
또 다른 사실은 'sql.DB.Open'은 연결을 열지 않아도된다는 것입니다. 단순히 정리 작업을 수행하고 연결할 준비를 할 수 있습니다. 이것이 sql.DB.Ping이 존재하는 이유입니다. 실제로 연결했는지 확인하십시오. –