NutzCN Logo
问答 执行自定义sql 异常
发布于 3186天前 作者 qq_ad4f65cb 2870 次浏览 复制 上一个帖子 下一个帖子
标签:

这里 文件中的sql

DROP TABLE IF EXISTS t_accounts2016;
CREATE TABLE t_accounts2016 (
accounts_ID1 varchar(18) default NULL ,
accounts_ID2 varchar(18) default NULL ,
accounts_name varchar(200) default NULL ,
accounts_level char(2) default NULL ,
parent_code varchar(16) default NULL,
create_time datetime default NULL,
upd_date datetime default NULL,
valid_flag char(1) default NULL ,
extend_flag char(2) default NULL ,
accounts_year char(4) default NULL,
subject_month char(2) default NULL ,
hl_flag char(1) default NULL ,
inc_exp_flag char(1) default NULL ,
id int(11) NOT NULL auto_increment ,
upd_user_id varchar(50) default NULL ,
index(accounts_ID2),
PRIMARY KEY  (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

这里是 读取并执行

	    ((NutDao)dao).setSqlManager(new FileSqlManager("/sqls"));
        System.out.println(dao.sqls().count());
        
        Sql sql = dao.sqls().create("create.sql");
        sql.vars().set("year", 2016);
        dao.execute(sql);

出错代码

Caused by: org.nutz.dao.DaoException: !Nutz SQL Error: 'DROP TABLE IF EXISTS t_accounts2016;
CREATE TABLE t_accounts2016 (
accounts_ID1 varchar(18) default NULL ,
accounts_ID2 varchar(18) default NULL ,
accounts_name varchar(200) default NULL ,
accounts_level char(2) default NULL ,
parent_code varchar(16) default NULL,
create_time datetime default NULL,
upd_date datetime default NULL,
valid_flag char(1) default NULL ,
extend_flag char(2) default NULL ,
accounts_year char(4) default NULL,
subject_month char(2) default NULL ,
hl_flag char(1) default NULL ,
inc_exp_flag char(1) default NULL ,
id int(11) NOT NULL auto_increment ,
upd_user_id varchar(50) default NULL ,
index(accounts_ID2),
PRIMARY KEY  (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;'
PreparedStatement: 
'DROP TABLE IF EXISTS t_accounts2016;
CREATE TABLE t_accounts2016 (
accounts_ID1 varchar(18) default NULL ,
accounts_ID2 varchar(18) default NULL ,
accounts_name varchar(200) default NULL ,
accounts_level char(2) default NULL ,
parent_code varchar(16) default NULL,
create_time datetime default NULL,
upd_date datetime default NULL,
valid_flag char(1) default NULL ,
extend_flag char(2) default NULL ,
accounts_year char(4) default NULL,
subject_month char(2) default NULL ,
hl_flag char(1) default NULL ,
inc_exp_flag char(1) default NULL ,
id int(11) NOT NULL auto_increment ,
upd_user_id varchar(50) default NULL ,
index(accounts_ID2),
PRIMARY KEY  (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;'
CaseMessage=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 t_accounts2016 (
accounts_ID1 varchar(18) default NULL ,
accounts_I' at line 2

新人求解,原生sql 在mysql中可以直接插入,但是代码却不行

6 回复

贴错了,文件里的sql是这个

/* create.sql */		 
 DROP TABLE IF EXISTS t_accounts$year;		 
 CREATE TABLE t_accounts$year (
 accounts_ID1 varchar(18) default NULL ,
 accounts_ID2 varchar(18) default NULL ,
 accounts_name varchar(200) default NULL ,
 accounts_level char(2) default NULL ,
 parent_code varchar(16) default NULL,
 create_time datetime default NULL,
 upd_date datetime default NULL,
 valid_flag char(1) default NULL ,
 extend_flag char(2) default NULL ,
 accounts_year char(4) default NULL,
 subject_month char(2) default NULL ,
 hl_flag char(1) default NULL ,
 inc_exp_flag char(1) default NULL ,
 id int(11) NOT NULL auto_increment ,
 upd_user_id varchar(50) default NULL ,
 index(accounts_ID2),
 PRIMARY KEY  (id)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

测试结果如下:
1. 两个sql一起跑,挂
2. 分别跑, 正常
3. 加";"跑,正常
4. 去掉";"跑,正常

so, 你只能分开跑了,貌似是mysql的限制

@wendal 换了个账号,DROP 和CREATE 之间有‘;’ 号啊;而且原生sql 直接执行也是没问题的

同样的问题。。我难道只能一条一条的执行嘛。。

DROP TABLE IF EXISTS t_accounts2016;
DROP TABLE IF EXISTS t_area_plan2016;
DROP TABLE IF EXISTS t_classification_table2016;
DROP TABLE IF EXISTS t_classification_table_merge2016;
DROP TABLE IF EXISTS t_contry_classification2016;
DROP TABLE IF EXISTS t_county_monthly_report2016;
DROP TABLE IF EXISTS t_county_monthly_report_merge2016;
DROP TABLE IF EXISTS t_dac2016;
DROP TABLE IF EXISTS t_income_imp_item2016;
DROP TABLE IF EXISTS t_income_imp_item_merge2016;
DROP TABLE IF EXISTS t_index_ranking2016;
DROP TABLE IF EXISTS t_index_ranking_merge2016;
DROP TABLE IF EXISTS t_m_key_point2016;
DROP TABLE IF EXISTS t_month_report_status2016;
DROP TABLE IF EXISTS t_pay_imp_item2016;
DROP TABLE IF EXISTS t_pay_imp_item_merge2016;
DROP TABLE IF EXISTS t_public_finance_budget_operate2016;
DROP TABLE IF EXISTS t_ratio2016;
DROP TABLE IF EXISTS t_report_process2016;
DROP TABLE IF EXISTS t_report_status2016;
DROP TABLE IF EXISTS t_set_section_imp2016;
DROP TABLE IF EXISTS t_structure_income2016;
DROP TABLE IF EXISTS t_structure_income_merge2016;
DROP TABLE IF EXISTS t_structure_pay2016;
DROP TABLE IF EXISTS t_structure_pay_merge2016;

@wendal
没有批量执行的方法嘛?每次新建表,数量都很多啊。。

添加回复
请先登陆
回到顶部