ERROR 1064 (HY000): ChildTable multi insert not provided

mysql>  insert into  user_info(user_id) values(1),(2),(3);
ERROR 1064 (HY000): ChildTable multi insert not provided


产生错误的原因是由于mycat中不支持一次对子表插入多条记录。


拆成两条SQL语句插入即可。
mysql> insert into user_info(user_id) values(2);insert into  user_info(user_id) values(3);
Query OK, 1 row affected (0.22 sec)
Query OK, 1 row affected (0.23 sec)




当使用mysqldump导出的sql向mycat中的ER表中的子表插入数据时,也会产生类似的错误。
因为默认mysqldump导出的语句默认是一次插入多条记录。


如果想让mysqldump导出的sql脚本能直接通过mycat插入到数据库中,建议使用以下参数:
mysqldump -uroot -p -h127.0.0.1 -P3316 -c  -t  --skip-add-drop-table  --extended-insert=false sakila actor>actor_extend_insert_false.sql


这时导出的SQL是单条插入而且还包含完整的字段名,我们可以用它来直接向mycat中ER表的子表插入数据,而不用特殊处理。
INSERT INTO `actor` (`actor_id`, `first_name`, `last_name`, `last_update`) VALUES (186,'JULIA','ZELLWEGER','2006-02-15 12:34:33');


-c, --complete-insert         插入时指定列名
-t, --no-create-info           不导出创建表的信息。Don't write table creation info. 
--add-drop-table               不添加删除表的信息
Add a DROP TABLE before each create.
 (Defaults to on; use --skip-add-drop-table to disable.)
-e, --extended-insert Use multiple-row INSERT syntax that include several VALUES lists. (Defaults to on; use --skip-extended-insert to disable.)







阅读更多
个人分类: MySQL
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭