cordiverse / minato

Type Driven Database Framework.
MIT License
26 stars 12 forks source link

Bug: Error: unable to open database file or a empty error when operate about ~4000 lines #23

Closed TimeBather closed 1 year ago

TimeBather commented 1 year ago
Error: unable to open database file
    at f.handleError (D:\Projects\KoishiBot\node_modules\@minatojs\sql.js\dist\sql-wasm.js:91:290)
    at c.step (D:\Projects\KoishiBot\node_modules\@minatojs\sql.js\dist\sql-wasm.js:81:394)
    at c.run (D:\Projects\KoishiBot\node_modules\@minatojs\sql.js\dist\sql-wasm.js:84:116)
    at null.<anonymous> (D:\Projects\KoishiBot\node_modules\@minatojs\driver-sqlite\src\index.ts:263:42)
    at SQLiteDriver.#exec (D:\Projects\KoishiBot\node_modules\@minatojs\driver-sqlite\src\index.ts:237:22)
    at SQLiteDriver.#run (D:\Projects\KoishiBot\node_modules\@minatojs\driver-sqlite\src\index.ts:263:5)
    at SQLiteDriver.#create (D:\Projects\KoishiBot\node_modules\@minatojs\driver-sqlite\src\index.ts:342:12)
    at SQLiteDriver.create (D:\Projects\KoishiBot\node_modules\@minatojs\driver-sqlite\src\index.ts:348:20)
    at Executable.execute (D:\Projects\KoishiBot\node_modules\@minatojs\core\src\selection.ts:98:40)
    at runMicrotasks (<anonymous>)
Empty Error:
at $b (D:\Projects\KoishiBot\node_modules\@minatojs\sql.js\dist\sql-wasm.js:131:228)
    at D:\Projects\KoishiBot\node_modules\@minatojs\sql.js\dist\sql-wasm.js:143:390
    at new Promise (<anonymous>)
    at initSqlJs (D:\Projects\KoishiBot\node_modules\@minatojs\sql.js\dist\sql-wasm.js:22:24)
    at SQLiteDriver.start (D:\Projects\KoishiBot\node_modules\@minatojs\driver-sqlite\src\index.ts:213:7)
    at null.<anonymous> (D:\Projects\KoishiBot\node_modules\@koishijs\core\src\database.ts:232:20)
    at null.<anonymous> (D:\Projects\KoishiBot\node_modules\cordis\src\events.ts:167:40)
    at ForkScope.ensure (D:\Projects\KoishiBot\node_modules\cordis\src\scope.ts:94:18)
    at Lifecycle.start (D:\Projects\KoishiBot\node_modules\cordis\src\events.ts:167:21)
    at Context.start (D:\Projects\KoishiBot\node_modules\cordis\src\context.ts:78:30) 

Mininum reputation:

import {Context, Schema, sleep} from 'koishi'

export const name = 'test-boom'

export const using = ['database']

export interface Config {}

export const Config: Schema<Config> = Schema.object({})

interface TestBoom{
  id:number
  name:string
  age:number
}

declare module "koishi"{
  interface Tables{
    test_boom:TestBoom
  }
}

export function apply(ctx: Context) {
  console.info("Start booming")
  ctx.database.extend("test_boom",{
    id: 'integer',
    name: 'string',
    age: 'integer'
  },{
    primary:['id']
  })
  let count = 0
  ctx.setInterval(async ()=>{
    try{
      const src=await ctx.database.create("test_boom",{
        name:"testLenghthAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
        age:64
      })
/*
await ctx.database.remove("test_boom",{
        id:src.id
      })
*/
    }catch(e){
      console.error("Exited at count",count)
      console.error(e)
      process.exit(0)
    }
    count++;
    if(count%100 == 0 )console.info(count)
  },0)

}

If the remove function called in the loop, the program throws a exception with empty error message.Otherwise it throws a "unable to open database file" excpetion

shigma commented 1 year ago

感谢反馈,问题已修复。