目标:--我试图在R中编译一个标记文档,其中包含一些带有CREATE TABLE IF NOT EXISTS语句的SQL代码块。这些文件被发送到本地主机上的MySQL数据库。实际上,它们应该用来初始化一个数据库,而在Markdown中给了我空间来解释数据库的结构。
问题:不幸的是,代码在R中编译时会生成语法错误1064。但是,如果我在MySQL工作台中运行相同的SQL代码,它将正确执行。我相信问题就在针织品- 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}图书馆(DBI)
图书馆(RMariaDB)
图书馆(这里)
db <- DBI::dbConnect(
drv = RMariaDB::MariaDB(),
dbname = "my_db",
主机= "localhost",
用户名= "my_username",
密码= "my_password“
)
knitr::opts_chunk$set(connection = "db")
```{sql my_sql_chunk, code = readLines(here("SQL/mysqlcode.sql"))}值得注意的是,我也遇到了这些语法错误,试图使用RStudio的SQL集成来执行代码。
编辑。以下是SQL错误:
您的SQL语法出现了错误;请检查与MySQL服务器版本相对应的手册,以便在第7行1064
中使用接近“CREATE TABLE如果不存在rt_counties ( countyId INTO AUTO_INCREMENT NOT NUL”)的正确语法。
发布于 2020-01-15 22:45:03
一次只允许一个语句。
https://stackoverflow.com/questions/59618089
复制相似问题