> 백엔드 개발 > Golang > SQLite: 메모리: 데이터베이스의 간헐적인 테이블 누락 오류

SQLite: 메모리: 데이터베이스의 간헐적인 테이블 누락 오류

WBOY
풀어 주다: 2024-02-09 20:24:09
앞으로
1041명이 탐색했습니다.

SQLite 中间歇性表丢失错误:内存:数据库

php 편집기 Banana는 SQLite의 간헐적인 테이블 손실 오류에 대한 솔루션을 제공합니다. SQLite 데이터베이스를 사용할 때 메모리 오류나 테이블 손실이 발생할 수 있습니다. 이 오류는 일반적으로 잘못된 데이터베이스 작업이나 메모리 문제로 인해 발생합니다. 이 문제를 해결하기 위해 쿼리문 최적화, 메모리 제한 증가 등과 같은 몇 가지 조치를 취할 수 있습니다. 이 문서에서는 적절한 데이터베이스 작동을 보장하기 위해 이 문제를 해결하는 방법을 자세히 설명합니다.

질문 내용

우리는 github.com/mattn/go-sqlite3 v1.14.16을 통해 Go에서 SQLite 3.39.4를 사용하고 있습니다. 연결 문자열은 ":memory:?cache=shared&mode=rwc&_mutex=no&_journal=WAL&_sync=NORMAL"

입니다.

테스트에서 "해당 테이블 없음: 구성" 오류가 가끔 표시됩니다. 혼란스러운 점은 문제의 쿼리가 테스트 사례에서 성공적으로 사용되었으며 이후 데이터베이스 연결과 오류를 발생시키는 트랜잭션 개체 모두에서 sqlite_master에 대한 쿼리에 테이블이 표시된다는 것입니다. 그러나 오류가 발생하면 쿼리가 더 이상 성공하지 않습니다.

모호한 질문인 줄 알지만, 적어도 어디를 볼지 제안해 줄 수 있는 사람이 있나요? 데이터베이스 연결은 항상 동일한 포인터 값을 갖습니다.

업데이트:

두 번째 시도에서 이 SSCCE의 문제를 거의재현할 수 있었습니다.

으아악

showTables는 SSCCE의 테이블을 표시하지 않지만 실제 테스트에서는 표시하기 때문에 실제 질문과 다릅니다. 이 예에서는 example.db 대신 :memory:를 사용하는 문제를 보여주지만 트랜잭션이 닫히지 않은 경우에만 해당됩니다. 이것이 인메모리 데이터베이스의 알려진 또는 예상된 동작입니까? :memory: 而不是 example.db 的问题,但前提是事务未关闭。这是内存数据库已知的或预期的行为吗?

解决方法

Go database/sql 隐式使用连接池,但 :memory:해결 방법Go database/sql은 암시적으로 연결 풀링을 사용하지만 :memory: 데이터베이스는 기본적으로 연결을 비공개

로 엽니다. 참고하세요:

//m.sbmmt.com/link/d346256ad566cf97801e5cecc45a2557

cache=shared,正如您所尝试的那样。但 SQLite 要求将其指定为 URI:file::memory:?cache=sharedfile:여러 SQLite 연결이 백그라운드에서 생성/닫기 때문에 각 문을 실행하는 연결과 데이터베이스에 대해 실제로 알 수 없으므로 당연히 일부 연결은 특정 데이터를 볼 수 있지만 다른 연결은 도착할 수 없습니다.

연결을 공유하는 한 가지 방법은

을 사용하는 것입니다.)
  • 공유 메모리 데이터베이스를 여는 보다 안정적인 방법은 다음과 같습니다. file:memdb1?mode=memory&cache=shared(命名为 memdb1
  • file:/memdb1?vfs=memdb(命名为 /memdb1,并使用 memdb)

VFS)

🎜 🎜 다른 매개변수는 불필요하거나 해로울 수도 있습니다(인메모리 데이터베이스의 경우). 🎜

위 내용은 SQLite: 메모리: 데이터베이스의 간헐적인 테이블 누락 오류의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿