Цель: Я пытаюсь скомпилировать документ уценки в R, который включает в себя несколько SQL фрагментов кода с CREATE TABLE IF NOT EXISTS
инструкциями. Они отправляются в базу данных MySQL на localhost. По сути, они должны служить для инициализации базы данных, а присутствие в Markdown дает мне возможность объяснить структуру этой базы данных.
Проблема: К сожалению, код SQL генерирует синтаксические ошибки [1064] при компиляции в R Markdown. Однако, если я запускаю тот же код SQL в MySQL Workbench, он выполняется правильно. Я полагаю, что проблема лежит где-то в цепочке от knitr - rDBI - RMariaDB - MySQL, хотя я также не могу исключить ошибку пользователя.
Вот мой MWE:
1. SQL
В файле SQL/mysqlcode.sql
У меня есть этот код:
CREATE TABLE IF NOT EXISTS rt_states (
stateId INT AUTO_INCREMENT NOT NULL,
stateName VARCHAR(32) NOT NULL,
PRIMARY KEY (stateId)
);
CREATE TABLE IF NOT EXISTS rt_counties (
countyId INT AUTO_INCREMENT NOT NULL,
countyName VARCHAR(75),
stateId INT,
PRIMARY KEY (countyId),
FOREIGN KEY (stateId)
REFERENCES rt_states (stateId)
ON DELETE RESTRICT ON UPDATE CASCADE
);
2. R Markdown
```{r dbconn}
library(DBI)
library(RMariaDB)
library(here)
db <- DBI::dbConnect(
drv = RMariaDB::MariaDB(),
dbname = "my_db",
host = "localhost",
username = "my_username",
password = "my_password"
)
knitr::opts_chunk$set(connection = "db")
```
```{sql my_sql_chunk, code = readLines(here("SQL/mysqlcode.sql"))}
```
Несмотря на это, я получил эти синтаксические ошибки, пытаясь выполнить код с интеграцией RStudio SQL тоже.
Редактировать. Вот ошибка SQL:
В синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'CREATE TABLE ЕСЛИ НЕ СУЩЕСТВУЕТ rt_counties (countyId INTO AUTO_INCREMENT NOT NUL' 'в строке 7 [1064]