ERRO COM SQLITE: DATABASE IS LOCKED

 Tópico anterior Próximo tópico Novo tópico

ERRO COM SQLITE: DATABASE IS LOCKED

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#485267 - 08/11/2018 02:48:05

MARCIODUO
TAMPA
Cadast. em:Maio/2016


Ola pessoal, estou com esse erro usando vb.net com sqlite, database locked!

Ja chequei minha conexao e esta tudo fechado. Abaixo segue o codigo:

        Dim TipoCategoria As String

        TipoCategoria = InputBox("Digitar a nova Categoria")

        Using cn As SQLiteConnection = ConectarSQLite()
            Try
                If cn.State = ConnectionState.Open Then cn.Close()

                cn.Open()

                If TipoCategoria = "" Or TipoCategoria.Length < 2 Then
                    MsgBox("Inserir valor maior do que 2", MsgBoxStyle.Critical)
                Else
                    Dim sql As String = "Insert into tblCategoria(Categoria) Values(?)"
                    Dim cmd As SQLiteCommand = New SQLiteCommand(sql, cn)
                    cmd.Parameters.Add(New SQLiteParameter("@Categoria", TipoCategoria))
                    cmd.ExecuteNonQuery()
                    MsgBox("Adicionado com sucesso!")
                    Call Carregar_Categoria()
                End If

            Catch ex As Exception
                MsgBox(ex.Message)
            Finally
                If cn.State = ConnectionState.Open Then cn.Close()
            End Try
        End Using

Marcio Duo


#485268 - 08/11/2018 08:44:22

TUNUSAT
SAMPA
Cadast. em:Dezembro/2003


Última edição em 08/11/2018 08:50:28 por TUNUSAT

MARCIODUO,

    Estava pesquisando sobre seu erro e achei isso:

===============================================
SQLite Database is Locked error in vb.net

Try this one, works fine for me:


Using SQLconnect As New SQLite.SQLiteConnection()
Dim SQLcommand As SQLiteCommand
SQLconnect.ConnectionString = sDBName

If SQLconnect.State = ConnectionState.Open Then SQLconnect.Close()

SQLconnect.Open()
SQLcommand = SQLconnect.CreateCommand

SQLcommand.CommandTimeout = 10

SQLcommand.CommandText = "INSERT INTO news (id, M_IP, M_TYPE, M_MESSAGE, M_DONE) VALUES (1, '192.168.2.7' ,'STATUS', 'Hallo?' ,1 )"
'SQLcommand.CommandText = "UPDATE news Set name = 'Johnny' WHERE id = last_insert_rowid()"
'SQLcommand.CommandText = "DELETE FROM news WHERE id = last_insert_rowid()"

Try

    Console.WriteLine("Erzeugung von n Zeilen: " & SQLcommand.ExecuteNonQuery(CommandBehavior.CloseConnection))

    SQLcommand.Dispose()
    If SQLconnect.State = ConnectionState.Open Then SQLconnect.Close()

Catch sql_ex As SQLiteException
    Console.WriteLine(sql_ex.ToString)
    Console.WriteLine(sql_ex.Message)

End Try

End Using


https://stackoverflow.com/questions/36087573/sqlite-database-is-locked-error-in-vb-net
===============================================

Mais especificamente (precisa ficar fora do TRY):

If SQLconnect.State = ConnectionState.Open Then SQLconnect.Close()


e

SQLcommand.CommandTimeout = 10



[]'s,
Tunusat.


Haja, pois, o que houver, ampliem-se obstáculos, agigantem-se problemas, intensifiquem-se lutas ou se agravem provações, trabalha sempre no bem de todos, porque, trabalhando na Seara do Bem, podes conservar a certeza de que Deus te sustentará. Emmanuel.

#485329 - 10/11/2018 18:08:50

MARCIODUO
TAMPA
Cadast. em:Maio/2016


Nao funcionou. Sigo com o mesmo problema.

Marcio Duo


#485333 - 11/11/2018 11:34:42

TUNUSAT
SAMPA
Cadast. em:Dezembro/2003


MARCIODUO,

   Deixa eu fazer uma pergunta...

   Será que o SQLite não está desligado no "services windows" (MSConfig / ABA "Serviços")?

[]'s,
Tunusat.

Haja, pois, o que houver, ampliem-se obstáculos, agigantem-se problemas, intensifiquem-se lutas ou se agravem provações, trabalha sempre no bem de todos, porque, trabalhando na Seara do Bem, podes conservar a certeza de que Deus te sustentará. Emmanuel.

#485405 - 14/11/2018 01:11:44

MARCIODUO
TAMPA
Cadast. em:Maio/2016


tb nao eh isso. Poxa, que coisa rsrsrs Eu nao queria usar o Access, mas acho q vou ter q usar access msm.

Marcio Duo


#485408 - 14/11/2018 09:01:24

TUNUSAT
SAMPA
Cadast. em:Dezembro/2003


Última edição em 14/11/2018 09:13:27 por TUNUSAT

MARCIODUO,

Citação:
:
tb nao eh isso. Poxa, que coisa rsrsrs Eu nao queria usar o Access, mas acho q vou ter q usar access msm.


   Err... okay. Eu achei um post na "stackoverflow" sobre um programa (http://www.nirsoft.net/utils/opened_files_view.html) para gerenciar esse problema e descobrir quem está travando o SQL Lite.
   Tem também outro post interessante: "How To Repair An SQLite Database" (https://random.kakaopor.hu/how-to-repair-an-sqlite-database/)
   Vou colocar outros links... por favor, veja.
   Também diz para não esquecer de usar os comandos:

  
sqlite_reset(xxx);

sqlite_finalize(xxx);


=================================================================
How do I unlock a SQLite database?

In windows you can try this program http://www.nirsoft.net/utils/opened_files_view.html to find out the process is handling db file. Try closed that program for unlock database...

How To Repair An SQLite Database
https://random.kakaopor.hu/how-to-repair-an-sqlite-database/

https://stackoverflow.com/questions/151026/how-do-i-unlock-a-sqlite-database

=================================================================
Error Code SQLITE_LOCKED (6): Database Is Locked

This error code occurs when you try to do two incompatible things with a database at the same time from the same database connection. For example, if you are in the middle of a SELECT statement and you try to DROP one of the tables being read by the SELECT, you will get an SQLITE_LOCKED error. Here is an example (using Tcl):
...

https://www.sqlite.org/cvstrac/wiki?p=DatabaseIsLocked

=================================================================
1.0 File Locking And Concurrency In SQLite Version 3

https://www.sqlite.org/lockingv3.html

=================================================================
sqlite database lock problem

  
        Try
Dim conn As SQLiteConnection = New SQLiteConnection("Data Source=" & dbPath)
            conn.SetPassword(dbPassword)
            conn.Open()
            Dim cmd As SQLiteCommand = New SQLiteCommand(conn)
            cmd.CommandText = "Select * From directory WHERE url = '" & sUrl & "'"
            Dim reader As SQLiteDataReader = cmd.ExecuteReader()
            Return reader.HasRows
reader.Close()
        Catch ex As Exception
            strLastError = ex.Message
            Debug.Print(strLastError)
            Return False
        Finally
          
            conn.Close()
        End Try


https://www.codeproject.com/Questions/205052/sqlite-database-lock-problem

=================================================================
How do I prevent SQLite database locks?

That page you linked, besides being quite old, talks about accesses from the same process through the same database connection (or through multipe connections in shared cache mode, which you should not use).

When not in WAL mode, multiple connections can read from the same database, but a writing transaction is exclusive, i.e., no other readers or writers are allowed.

In WAL mode, a writer and readers do not block each other, but there is still only one writer allowed.

https://dba.stackexchange.com/questions/45368/how-do-i-prevent-sqlite-database-locks

=================================================================

[]'s,
Tunusat.


Haja, pois, o que houver, ampliem-se obstáculos, agigantem-se problemas, intensifiquem-se lutas ou se agravem provações, trabalha sempre no bem de todos, porque, trabalhando na Seara do Bem, podes conservar a certeza de que Deus te sustentará. Emmanuel.

 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário