MySQL5.6导入数据时的错误分析

今天在导入mysqldump导出的数据的时候出现了一个奇怪的错误?

ERROR 1064 (42000) at line 13327: 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 ‘*/‘ at line 1

打开文件的13327行,发现这个是一个触发器的SQL语句带有 /*! */ 不仔细看以为创建triggers失败

但是手工执行的时候确实这样子的:

mysql> /*!50003 CREATE*/ /*!50017 DEFINER=`appuser`@`%`*/ /*!50003 TRIGGER `b_admin_user_update` AFTER UPDATE ON `b_admin_user` FOR EACH ROW

->       INSERT INTO delta_b_admin_user(`user_id`,`username`, `password`, `salt`, `real_name`, `cell_phone`, `qq`, `phone`, `email`, `wangwang`, `created_time`, `last_login_time`, `last_login_ip`, `user_group_id`, `flag`, `parent_id`, `qr_code`)

-> values

-> (NEW.user_id,NEW.username, NEW.password, NEW.salt, NEW.real_name, NEW.cell_phone, NEW.qq, NEW.phone, NEW.email, NEW.wangwang, NEW.created_time, NEW.last_login_time, NEW.last_login_ip, NEW.user_group_id, NEW.flag, NEW.parent_id, NEW.qr_code); */;;

Query OK, 0 rows affected (0.01 sec)

ERROR 1064 (42000): 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 ‘*/‘ at line 1

这是执行成功了呢? 但还是报了个错误:(

经过查找,发现mysql在导入的时候有个参数是忽略错误继续执行后面的SQL知道整个文件执行完成

--force 这个参数,加上参数再导入一次

/usr/local/mysql-5.6/bin/mysql -uroot -p‘pass‘ --force  < /usr/local/mysql-5.6/all.sql

Warning: Using a password on the command line interface can be insecure.

ERROR 1064 (42000) at line 13327: 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 ‘*/‘ at line 1

ERROR 1064 (42000) at line 13345: 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 ‘*/‘ at line 1

ERROR 1064 (42000) at line 15612: 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 ‘*/‘ at line 1

ERROR 1064 (42000) at line 15630: 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 ‘*/‘ at line 1

ERROR 1064 (42000) at line 21753: 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 ‘*/‘ at line 1

ERROR 1064 (42000) at line 21771: 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 ‘*/‘ at line 1

ERROR 1064 (42000) at line 28734: 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 ‘*/‘ at line 1

恩,确实没有退出。

之后又做了一个测试

在导出数据的时候不导出触发器,那么需要加上参数 --skip-triggers

再导入的时候就没有报错了

那么是不是mysql-5.6版本的关系么?

有待研究

时间: 2024-10-11 23:01:07

MySQL5.6导入数据时的错误分析的相关文章

DB2导入数据时乱码问题

1.由于导入import导入数据时乱码,一直找不到解决办法,于是就用load导入 LOAD后,发现某些表检查挂起( 原因码为 "1",所以不允许操作 SQLSTATE=57016 ) 解决办法:set integrity for xxxxxx immediate checked 2.表锁定(原因码为7) 解决办法:reorg table xxxx 3.去重 select distinct a.column from table1 as a inner join table2 as b

MYSQL导入数据时,出现错误:Incorrect string value: &#39;\xF0\x9F...&#39; for column &#39;XXX&#39; at row 1

Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1 这个问题,原因是UTF-8编码有可能是两个.三个.四个字节.Emoji表情或者某些特殊字符是4个字节,而MySQL的utf8编码最多3个字节,所以数据插不进去. 我的解决方案是这样的 1.在mysql的安装目录下找到my.ini,作如下修改: [mysqld] character-set-server=utf8mb4 [mysql] default-character-

SQL Server导入数据时“启用标示插入”详解

在SQL Server中导入数据时,会有一个"启用标示插入"的选项,突然间懵逼了,这到底啥意思?我选与不选这个选项,结果好像没区别!不科学啊这,"存在即合理",我相信这个选项肯定有它的用处,只是我不知道罢了. 于是我去查资料,在CSDN论坛里找到了可能的解释: 1)首先:"启用标示插入"只对标示列(identity定义的列)起作用.所以如果你要使用这个功能,肯定得有标示列了.我当时狂晕的地方在于,我没在数据库创建表,而是直接在导入数据的过程中创建

Navicat导入数据时发生了报错 --- 1153 - Got a packet bigger than &#39;max_allowed的处理办法

今天我在使用Navicat导入.sql文件数据时,发现本来是80万条的数据,结果只导入了10万条左右,而且在其错误信息日志中,我发现了这样一条错误:1153 - Got a packet bigger than 'max_allowed. 度娘了一番后,发现越来是我的SQL文件远远大于MySQL默认执行的文件大小,所以执行不过去. 解决方法: 在MySQL安装目录下找到文件my.ini,搜索[mysqld],在其下面添加一句话 max_allowed_packet=521M  ##该处按照自己的

(转)SSIS处理导入数据时, 存在的更新, 不存在的插入

问题描述: 当你把数据从其他数据库, 或者是文本文件之类的其他数据源导入到目的数据库时, 有时希望在导入的处理中, 能够实现"数据存在时更新, 不存在时导入" 在之前, 一般是通过导入临时表, 然后再判断处理导入正式表的, 在SQL Server 2005中, SSIS可以在导入处理时直接完成这种处理. 下面具体演示一下如何用SSIS完成这样的处理: 1.          准备测试环境 -- 1. 在数据库中创建下面的对象 USE tempdb GO CREATE TABLE dbo

asp.net线程批量导入数据时通过ajax获取执行状态

最近因为工作中遇到一个需求,需要做了一个批量导入功能,但长时间运行没个反馈状态,很容易让人看了心急,产生各种臆想!为了解决心里障碍,写了这么个功能. 通过线程执行导入,并把正在执行的状态存入session,既共享执行状态,通过ajax调用session里的执行状态,从而实现反馈导入状态的功能! 上代码: 前端页面 <!DOCTYPE html> <html lang="en"> <head>  <meta charset="UTF-8

解决导入数据时提示分区数据不能导入问题

oracle导入数据的时候,有时会出现分区数据不能导入的问题,以及在迁移表空间的时候可能存在的索引状态为'UNUSABLE'的隐患,下面为解决方案: --查询出所有的状态为UNUSABLE的索引,并生成出来SQL select   'alter index ' ||  index_name || ' rebuild ;' from user_indexes where status='UNUSABLE';--例子: alter index PK_UN_ORGANIZATION_FUNCTION

Oracle 用中文作为关键字查询无数据及sql loader 导入数据时数据分隔异常的解决办法

前提:电脑A使用sqlldr向电脑B中的Oracle批量导入数据.数据分隔及查询都正常. 拷贝A中的源数据及ctl文件到电脑C中,拷贝B中的Oracle安装文件并安装至电脑C中. 电脑C使用ctl将源文件导入本机Oracle中之后发现.导入的数据分隔错误,比如[email protected]@ccc格式的数据,sqlldr导入的时候用@分隔.但是实际导入结果并不是column1=aaa,column2=bbb, column3=ccc:有部分数据变成了[email protected],[em

mysql通过sql文件导入数据时出现乱码的解决办法

首先在新建数据库时一定要注意生成原数据库相同的编码形式,如果已经生成可以用phpmyadmin等工具再整理一次,防止数据库编码和表的编码不统一造成乱码. 方法一: 通过增加参数 –default-character-set = utf8 解决乱码问题 mysql -u root -p password < path_to_import_file –default-character-set = utf8 方法二: 在命令行导入乱码解决 1. use database_name; 2. set n