R Markdown, SQL блок кода генерирует синтаксическую ошибку - PullRequest
1 голос
/ 06 января 2020

Цель: Я пытаюсь скомпилировать документ уценки в 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]

1 Ответ

1 голос
/ 16 января 2020

Допускается только одна выписка за раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...