Простая попытка миграции:
(ns sindu.migration
(:require [ragtime.jdbc :as jdbc]
[ragtime.repl :as repl]))
(def ^:dynamic *db-host* "localhost")
(def ^:dynamic *db-port* 3306)
(def ^:dynamic *db-name* "sindu")
(def ^:dynamic *db-user* "sindu")
(def ^:dynamic *db-user-pass* "sindu")
(def db-config {:classname "com.mysql.jdbc.Driver"
:subprotocol "mysql"
:subname (str "//" *db-host* ":" *db-port* "/" *db-name*)
:user *db-user*
:password *db-user-pass*})
(def migration-config
{:datastore (jdbc/sql-database db-config)
:migrations (jdbc/load-resources "migrations")})
(repl/migrate migration-config)
Последняя строка завершается с ошибкой:
Applying 001-site
Execution error (SQLSyntaxErrorException) at com.mysql.cj.jdbc.exceptions.SQLError/createSQLException (SQLError.java:120).
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CREATE TABLE site_translation (site_id INT(11) NOT NULL,
' at line 7
И соответствующий SQL-скрипт, о котором идет речь (001-site.up.sql
):
-- Create site and site_translation tables
CREATE TABLE site (id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
base_url VARCHAR(511) NOT NULL);
CREATE TABLE site_translation (site_id INT(11) NOT NULL,
language VARCHAR(5),
display_name VARCHAR(255) NOT NULL,
FOREIGN KEY (site_id) REFERENCES site(id));
Что прекрасно работает, когда я выполняю source 001-site.up.sql
с консоли MySQL.
В чем причина этой ошибки?