Я хочу создать базу данных с помощью rusqlite, в ней должно быть несколько таблиц, поэтому я создал файл create.sql
, содержащий код SQL для создания таблиц.
В моем воспроизведенном примере это выглядит так:
create table TestTable1 (
id integer primary key
);
create table TestTable2 (
id integer primary key
);
Затем я запускаю его с помощью Rust, вот так:
fn main() {
let db = rusqlite::Connection::open("test.db").unwrap();
let command = std::fs::read_to_string("create.sql").unwrap();
db.execute(&command, []).unwrap();
}
Но когда я открываю файл в браузере БД, он содержит только TestTable1
. Я также не вижу его в необработанном двоичном файле базы данных и не могу получить доступ к таблице с помощью rusqlite, поэтому я почти уверен, что она не создается.
Так почему же rusqlite закрывается после создания первой таблицы?
Вместо этого используйте .execute_batch().
Просто .execute()
выполняет только один оператор (как описано). Вызов .execute()
с несколькими операторами будет игнорировать остальные, если вы не согласитесь использовать флаг функции "extra_check"
. Дополнительную информацию смотрите в этом выпуске GitHub.