Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 5: 'database is locked'

-3

when im sending this POST message to http://localhost:5000/api/auth/register

get an error saying,

 Hosting environment: Production
    Content root path: F:\ASPapps\aspcore\DatingApp\datingapp.api
    Now listening on: http://localhost:5000
    Application started. Press Ctrl+C to shut down.
    fail: Microsoft.EntityFrameworkCore.Update[10000]
          An exception occurred in the database while saving changes for context type 'DatingApp.API.Data.DataContext'.
          Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 5: 'database is locked'.
             at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
             at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
             at Microsoft.Data.Sqlite.SqliteCommand.ExecuteNonQuery()
             at Microsoft.Data.Sqlite.SqliteConnectionExtensions.ExecuteNonQuery(SqliteConnection connection, String commandText)
             at Microsoft.Data.Sqlite.SqliteTransaction..ctor(SqliteConnection connection, IsolationLevel isolationLevel)
             at Microsoft.Data.Sqlite.SqliteConnection.BeginTransaction(IsolationLevel isolationLevel)
             at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.BeginTransactionWithNoPreconditions(IsolationLevel isolationLevel)
             at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.<BeginTransactionAsync>d__38.MoveNext()

         So on

    Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 5: 'database is locked'.
       at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
       at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
       at Microsoft.Data.Sqlite.SqliteCommand.ExecuteNonQuery()
       at Microsoft.Data.Sqlite.SqliteConnectionExtensions.ExecuteNonQuery(SqliteConnection connection, String commandText)
       at Microsoft.Data.Sqlite.SqliteTransaction..ctor(SqliteConnection connection, IsolationLevel isolationLevel)
       at Microsoft.Data.Sqlite.SqliteConnection.BeginTransaction(IsolationLevel isolationLevel)
       at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.BeginTransactionWithNoPreconditions(IsolationLevel isolationLevel)
       at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.<BeginTransactionAsync>d__38.MoveNext()

    --- End of stack trace from previous location where exception was thrown ---
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       at Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware.<Invoke>d__3.MoveNext()
    --- End of stack trace from previous location where exception was thrown ---
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Frame`1.<ProcessRequestsAsync>d__2.MoveNext()

by sending following message,

{ "username":"dfdd", "password":"fdfcvc" }

what could possibly went wrong? and also , the data annotations like Required and Stringlength kind of annotations doesn't work too.

UserForRegisterDto.cs

using System.ComponentModel.DataAnnotations;
using System.ComponentModel;



namespace DatingApp.API.Dtos
{
    public class UserForRegisterDto
    {

        [Required]
        public string Username { get; set; }


        [Required]
        [StringLength(8, MinimumLength = 4, ErrorMessage = "You must have to submit a password 4 and 8")]
        public string Password { get; set; }

    }
}

DataContext.cs

using DatingApp.API.Models;
using Microsoft.EntityFrameworkCore;

namespace DatingApp.API.Data
{
    public class DataContext : DbContext
    {
        public DataContext(DbContextOptions<DataContext> options) : base(options){}
        public DbSet<value> Values {get; set;}
        public DbSet<User> Users{get;set;}
    }
}

AuthController.cs

using System.Threading.Tasks;
using DatingApp.API.Data;
using DatingApp.API.Dtos;
using DatingApp.API.Models;
using Microsoft.AspNetCore.Mvc;

namespace DatingApp.API.Controllers
{   [Route("api/[controller]")]

    public class AuthController : ControllerBase
    {
        private readonly IAuthRepository _repo;
        public AuthController(IAuthRepository repo)
        {
          _repo = repo;
        }



        [HttpPost("register")]
        public async Task<IActionResult> Register([FromBody]UserForRegisterDto userForRegisterDto ){
         //validate request
         userForRegisterDto.Username = userForRegisterDto.Username.ToLower();
         if(await _repo.UserExists(userForRegisterDto.Username))
         return BadRequest("User Name is taken");

         var userToCreate = new User
         {
             Username = userForRegisterDto.Username
         };

         var createdUser = await _repo.Register(userToCreate,userForRegisterDto.Password);
         return StatusCode(201);
        }

    }
}

This is an asp.net core 2 mvc web api project.

c#
sqlite
asp.net-core
asked on Stack Overflow Nov 4, 2018 by GayanS • edited Nov 4, 2018 by Camilo Terevinto

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0