R Markdown,SQL 代码块生成语法错误
R Markdown, SQL code chunk generates Syntax Error
目标: 我正在尝试在 R 中编译一个降价文档,其中包含一些带有 CREATE TABLE IF NOT EXISTS
语句的 SQL 代码块。这些被发送到本地主机上的 MySQL 数据库。实际上,它们应该用于初始化数据库,并且在 Markdown 中为我提供了解释该数据库结构的空间。
问题: 不幸的是,SQL 代码在 R Markdown 中编译时生成语法错误 [1064]。但是,如果我 运行 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 降价
```{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 错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE IF NOT EXISTS rt_counties ( countyId INTO AUTO_INCREMENT NOT NUL' at line 7 [1064]
一次只允许一个语句。
目标: 我正在尝试在 R 中编译一个降价文档,其中包含一些带有 CREATE TABLE IF NOT EXISTS
语句的 SQL 代码块。这些被发送到本地主机上的 MySQL 数据库。实际上,它们应该用于初始化数据库,并且在 Markdown 中为我提供了解释该数据库结构的空间。
问题: 不幸的是,SQL 代码在 R Markdown 中编译时生成语法错误 [1064]。但是,如果我 运行 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 降价
```{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 错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE IF NOT EXISTS rt_counties ( countyId INTO AUTO_INCREMENT NOT NUL' at line 7 [1064]
一次只允许一个语句。