我使用基于Eclipse 3.7的STS 2.7.1中的Eclipse SQL Editor (Eclipse Data Tool Platform 1.9.0)。(数据库为MySQL 5.5)
如果我有SQL剪贴簿(或任何其他文件),并在其中放置一些SQL DDL语句,其中每个语句都写在以;
结尾的单行上(这是eclipse中配置的分隔符),那么我可以一起执行所有语句(执行所有Ctrl+Alt+X)。这样做没有问题,eclipse将每条语句作为单个语句执行。
但是如果我有相同格式的正常插入语句(每行/语句以;
结束),那么执行所有语句一起失败。Eclipse试图在一个SQL语句中处理所有语句。失败,MySql报告语法错误。
INSERT INTO `folder` (`id`, `businessId`, `status`, `title`, `parent_Folder_fk`) VALUES(1, 1544565486, 'ACTIVE', 'Root', NULL);
INSERT INTO `folder` (`id`, `businessId`, `status`, `title`, `parent_Folder_fk`) VALUES(6, 1802811831392782301, 'ACTIVE', 'Ralphz', 1);
...
你的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第2行'INSERT INTO
folder
(id
,businessId
,status
,title
,parent_Folder_fk
)'附近使用正确的语法
我可以单独执行每一行(选择一行并执行选择Alt+X)。所以我猜语句中没有失败,但是分割语句有问题。
我错在哪里?
找到问题的原因和解决方法。
Execute all不能正确地沿着分隔符分隔insert into语句(与其他语句一起工作很好),并且较新的MySQL版本不允许在一行中包含多个语句,很可能会阻止SQL注入。
我怀疑前者可以很容易地修复,但是MySQL有一个配置属性允许多行SQL语句。你只需要添加"allowMultiQueries=true"到数据源资源管理器/数据源属性/驱动程序属性/可选/附加属性。
要在table
中添加多行,可以使用以下command
:
INSERT INTO `folder` (`id`, `businessId`, `status`, `title`, `parent_Folder_fk`) VALUES(1, 1544565486, 'ACTIVE', 'Root', NULL), (6, 1802811831392782301, 'ACTIVE', 'Ralphz', 1);
或
使用plugin
加载,就像这里解释的。
要插入多个表,请多测试两件事:
- 用多个
inserts
创建stored procedure
; - 在
table
和execute multiple stored procedures
上为每个insert
创建一个stored procedure