2017-01-23 5 views
1

Это то, что я пытался, начиная с clojure.java.jdbc и карта, содержащая детали соединения с базой данных:Как создать базу данных с помощью JDBC в Clojure?

(:require '[clojure.java.jdbc :as j])) 

(def mysql-db {:dbtype "mysql", :dbname "changelog_development", :user "root", :password "", :useSSL true, :verifyServerCertificate false} 

Сначала я пытался использовать execute, но он не может использовать данную конфигурацию соединения, поскольку база данных еще не существует:

(j/execute! mysql-db "CREATE DATABASE changelog_development") ;; MySQLSyntaxErrorException Unknown database 'changelog_development'  

Так я удалить что dbname ключ и попытался снова, однако ошибка говорит, что я отсутствующий параметр:

(j/execute! (dissoc mysql-db :dbname) "CREATE DATABASE changelog_development") ;; IllegalArgumentException db-spec {:dbtype "mysql", :user "root", :password "", :useSSL true, :verifyServerCertificate false} is missing a required parameter 

ответ

4

clojure.java.jdbc Спецификация соединения имеет множество возможных форматов. У одного с ключами для :dbtype, :user и т. Д. Требуется также указать :dbname.

Вы также можете указать соединение спецификации с использованием соединения URI вместо и выполнить ваше заявление еще раз:

{:connection-uri "jdbc:mysql://localhost/?user=root&password="}

Смежные вопросы