Portal de códigos de erro
SQLiteSQLiteCódigo de erro

SQLITE_BUSY

busy

Outras formas: 5

Código SQLITE_BUSY · Problema relatado por SQLite.

O código de resultado SQLITE_BUSY indica que o arquivo de base de dados não pôde ser escrito (ou, em alguns casos, lido) por causa da atividade concorrente por alguma outra conexão de base de dados, normalmente uma conexão de base de dados em um processo separado. Por exemplo, se o processo A estiver no meio de uma grande transação de escrita e ao mesmo tempo o processo B tentará iniciar uma nova transação de gravação, o processo B recuperará um resultado SQLITE_BUSY porque o SQLite só suporta um escritor de cada vez. O processo B precisará esperar pelo processo A para terminar a sua transação antes de iniciar uma nova transação. As interfaces sqlite3_busy_timeout() e sqlite3_busy_handler() e o pragma ocupado_timeout estão disponíveis para o processo B para ajudá-lo a lidar com erros SQLITE_BUSY. Um erro SQLITE_BUSY pode ocorrer em qualquer ponto em qualquer momento. uma transação: quando a transação é iniciada pela primeira vez, durante qualquer operação de gravação ou atualização, ou quando a transação se compromete. Para evitar encontrar erros SQLITE_BUSY no meio de uma transação, o aplicativo pode usar BEGIN IMMEDIATE em vez de apenas BEGIN para iniciar uma transação. O comando BEGIN IMMEDIATE pode ser ele próprio a devolver SQLITE_BUSY, mas se tiver sucesso, então SQLite garante que nenhuma operação subsequente no mesmo banco de dados através do próximo COMMIT irá devolver SQLITE_BUSY. Veja também: SQLITE_BUSY_RECOVERY e SQLITE_BUSY_SNAPSHOT. O código de resultado SQLITE_BUSY difere de SQLITE_LOCKED nesse SQLITE_BUSY indica um conflito com uma conexão de banco de dados separada, provavelmente num processo separado, enquanto SQLITE_L O BOCKED indica um conflito dentro da mesma conexão de banco de dados (ou às vezes uma conexão de banco de dados com um cache compartilhado).

OPUS-MT · Helsinki-NLP / CTranslate2 · Esta é uma tradução automática. Confira os termos técnicos e as condições aplicáveis no original em inglês.

The SQLITE_BUSY result code indicates that the database file could not be written (or in some cases read) because of concurrent activity by some other database connection, usually a database connection in a separate process. For example, if process A is in the middle of a large write transaction and at the same time process B attempts to start a new write transaction, process B will get back an SQLITE_BUSY result because SQLite only supports one writer at a time. Process B will need to wait for process A to finish its transaction before starting a new transaction. The sqlite3_busy_timeout() and sqlite3_busy_handler() interfaces and the busy_timeout pragma are available to process B to help it deal with SQLITE_BUSY errors. An SQLITE_BUSY error can occur at any point in a transaction: when the transaction is first started, during any write or update operations, or when the transaction commits. To avoid encountering SQLITE_BUSY errors in the middle of a transaction, the application can use BEGIN IMMEDIATE instead of just BEGIN to start a transaction. The BEGIN IMMEDIATE command might itself return SQLITE_BUSY, but if it succeeds, then SQLite guarantees that no subsequent operations on the same database through the next COMMIT will return SQLITE_BUSY. See also: SQLITE_BUSY_RECOVERY and SQLITE_BUSY_SNAPSHOT. The SQLITE_BUSY result code differs from SQLITE_LOCKED in that SQLITE_BUSY indicates a conflict with a separate database connection, probably in a separate process, whereas SQLITE_LOCKED indicates a conflict within the same database connection (or sometimes a database connection with a shared cache).

Links de solução de problemas e diagnóstico

Primeiro, confira se o produto, a versão e o ambiente do documento correspondem à sua situação.