question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

How to set options when using better-sqlite3 with sqlcipher?

See original GitHub issue

Issue type:

  • question
  • bug report
  • feature request
  • documentation issue

Database system/driver:

  • cordova
  • mongodb
  • mssql
  • mysql / mariadb
  • oracle
  • postgres
  • sqlite / better-sqlite3-multiple-ciphers
  • sqljs
  • react-native
  • expo

TypeORM version:

[x] 0.2.41 [ ] @next [ ] 0.x.x (or put your version here)

better-sqlite3-multiple-ciphers version: 7.4.5

  • The following method is in effect (using better-sqlite3-multiple-ciphers)
// encrypt db
const db = require('better-sqlite3-multiple-ciphers')('foobar.db', { verbose: console.log })
db.pragma("cipher='sqlcipher'")
db.pragma(`rekey='secret-key'`)
db.prepare(`CREATE TABLE "post" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar NOT NULL, "text" varchar NOT NULL)`).run()
const stmt = db.prepare('INSERT INTO post (title, text) VALUES (?, ?)')
const info = stmt.run('Joey', 'my homie')
db.close()

// decrypt db
const db = require('better-sqlite3-multiple-ciphers')('foobar.db', { verbose: console.log });

db.pragma(`cipher='sqlcipher'`)
db.pragma("key='secret-key'");
const stmt = db.prepare("SELECT * FROM post")
console.log(stmt.get()); // { id: 1, title: 'Joey', text: 'my homie' }
  • The following method is not valid (using typeorm)
import { createConnection } from 'typeorm'
import { BetterSqlite3ConnectionOptions } from 'typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions'
import { Post } from './entity/post'

const config: BetterSqlite3ConnectionOptions = {
  type: 'better-sqlite3',
  key: 'secret-key',
  database: 'foobar.db',
  driver: require('better-sqlite3-multiple-ciphers'),
  entities: ['entity/*.ts'],
  logging: true,
  verbose: console.log,
  prepareDatabase: db => {
    db.pragma(`cipher='sqlcipher'`)
  }
}

const start = async () => {
  const conn = await createConnection(config)
  const posts = await conn.manager.find(Post)
  console.log(posts)
}

start()  // SqliteError: file is not a database

I don’t know what’s wrong with my options for typeorm.

Related to issue: https://github.com/m4heshd/better-sqlite3-multiple-ciphers/issues/4

The reproducible repo: https://github.com/yolopunk/typeorm-better-sqlite-sqlcipher

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Reactions:4
  • Comments:6 (3 by maintainers)

github_iconTop GitHub Comments

2reactions
pleerockcommented, Jan 15, 2022

Thank you guys!

1reaction
yolopunkcommented, Dec 22, 2021

@m4heshd Awesome! That is worked by verification. I could commit a pull request for fixed the bug!

Thank you very much!

Read more comments on GitHub >

github_iconTop Results From Across the Web

Using sqlcipher with sqlite3 in Electron-Builder application
I am trying to create an encrypted database like this in my Electron application, const sqlite3 = require('sqlite3').verbose(); var db = new sqlite3.Database('....
Read more >
SQLCipher API - Zetetic LLC
Force SQLCipher to operate with the default settings consistent with that major version number as the default for the currently executing process (i.e....
Read more >
better-sqlite3-sqlcipher - npm
Start using better-sqlite3-sqlcipher in your project by running `npm i better-sqlite3-sqlcipher`. There is 1 other project in the npm ...
Read more >
Pragma statements supported by SQLite
So if you set the cache size using a negative number and subsequently ... This pragma returns the names of compile-time options used...
Read more >
[nodejs]better-sqlite3 数据库加密 - 掘金
背景我们在使用electron 开发时,使用了better-sqlite3,但数据比较敏感, ... 2、How to set options when using better-sqlite3 with sqlcipher?
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found