db: запустить схему sql (содержит несколько операторов) - PullRequest
0 голосов
/ 21 мая 2018

В моем проекте есть schema.sql, который содержит операторы CREATE TABLE для настройки моей базы данных sqlite3, но я не могу понять, как запустить этот файл из Racket.Я получаю следующее сообщение об ошибке:

; query-exec: multiple statements given
;   value: "CREATE TABLE IF NOT EXISTS pet (\n  id INTEGER PRIMARY KEY,\n  name TEXT NOT NULL,\n  kind TEXT NOT NULL,\n  owner_id REFERENCES owner(id) NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS owner (\n  id INTEGER PRIMARY KEY,\n  name TEXT NOT NULL\n);\n"
; Context:
;  /usr/share/racket/collects/db/private/sqlite3/connection.rkt:208:4 prepare1* method in connection%
;  /usr/share/racket/collects/db/private/sqlite3/connection.rkt:137:4 check-statement method in connection%
;  /usr/share/racket/collects/db/private/sqlite3/connection.rkt:73:4 query1 method in connection%
;  /usr/share/racket/collects/db/private/generic/functions.rkt:217:0 query-exec
;  /home/winston/code/example-db-racket/main.rkt:1:1 [running body]
; [Due to errors, REPL is just module language, requires, and stub definitions]

Есть ли способ запустить несколько операторов с пакетом db?

main.rkt

#lang racket

(require db)

(define database
  (sqlite3-connect #:database "database.sqlite3" #:mode 'create))

(define schema
  (call-with-input-file "schema.sql" port->string))

(query-exec database schema)

схема.sql

CREATE TABLE IF NOT EXISTS pet (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  kind TEXT NOT NULL,
  owner_id REFERENCES owner(id) NOT NULL
);

CREATE TABLE IF NOT EXISTS owner (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL
);
...