MySQL3次导入报错解决笔记!

报错1、ERROR at line 16779: Unknown command ‘\‘‘.

[[email protected] ~]# mysql -u hyxd -p xxxx <xxxx.sql 

Enter password: 

ERROR at line 16779: Unknown command ‘\‘‘.

报错原因:字符集问题

解决方式:修改字符集为utf-8

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

报错2、ERROR 2006 (HY000) at line 11903: MySQL server has gone away

[[email protected] ~]# mysql -uhyxd -p xedk <xxxx.sql 

Enter password: 

ERROR 2006 (HY000) at line 11903: MySQL server has gone away

报错原因

响应超时等

解决方式:

max_allowed_packet = x M

wait_timeout=10

除此之外,可能还有一些别的buffer_size的变量会影响到,也值得注意!

例如 

read_buffer_size 

read_rnd_buffer_size

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

报错3、ERROR 1418 (HY000) at line 24166: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)


[email protected] ~]# mysql -uroot -p xxxx <xxxx.sql 

Enter password: 

ERROR 1418 (HY000) at line 24166: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

报错原因:

MySQL开启bin-log后,调用存储过程或者函数以及触发器时,会出现错误号为1418的错误:

解决方式:

1.在客户端上执行SET GLOBAL log_bin_trust_function_creators = 1;

2.MySQL启动时,加上--log-bin-trust-function-creators选贤,参数设置为1

3.在MySQL配置文件my.ini或my.cnf中的[mysqld]段上加log-bin-trust-function-creators=1

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

第3种报错详细分析:(参考自网络)

因为CREATE PROCEDURE, CREATE FUNCTION, ALTER PROCEDURE,ALTER FUNCTION,CALL, DROP PROCEDURE, DROP FUNCTION等语句都会被写进二进制日志,然后在从服务器上执行。但是,一个执行更新的不确定子程序(存储过程、函数、触发器)是不可重复的,在从服务器上执行(相对与主服务器是重复执行)可能会造成恢复的数据与原始数据不同,从服务器不同于主服务器的情况。

为了解决这个问题,MySQL强制要求:

在主服务器上,除非子程序被声明为确定性的或者不更改数据,否则创建或者替换子程序将被拒绝。

这意味着当创建一个子程序的时候,必须要么声明它是确定性的,要么它不改变数据。

声明方式有两种,

第一种:声明是否是确定性的

DETERMINISTIC和NOT DETERMINISTIC指出一个子程序是否对给定的输入总是产生同样的结果。

如果没有给定任一特征,默认是NOT DETERMINISTIC,所以必须明确指定DETERMINISTIC来声明一个子程序是确定性的。 

这里要说明的是:使用NOW() 函数(或它的同义)或者RAND() 函数不会使一个子程序变成非确定性的。对NOW()而言,二进制日志包括时间戳并会被正确的执行。RAND()只要在一个子程序内被调用一次也可以被正确的复制。所以,www.linuxidc.com可以认为时间戳和随机数种子是子程序的确定性输入,它们在主服务器和从服务器上是一样的。

第二种:声明是否会改变数据  

CONTAINS SQL, NO SQL, READS SQL DATA, MODIFIES SQL用来指出子程序是读还是写数据的。

无论NO SQL还是READS SQL DATA都指出,子程序没有改变数据,但是必须明确地指定其中一个,因为如果任何指定,默认的指定是CONTAINS SQL。

默认情况下,如果允许CREATE PROCEDURE 或CREATE FUNCTION 语句被接受,就必须明确地指定DETERMINISTIC 或 NO SQL与READS SQL DATA 中的一个,否则就会产生1418错误。


或者理解:

这是我们开启了bin-log, 我们就必须指定我们的函数是否是

1 DETERMINISTIC 不确定的

2 NO SQL 没有SQl语句,当然也不会修改数据

3 READS SQL DATA 只是读取数据,当然也不会修改数据

4 MODIFIES SQL DATA 要修改数据

5 CONTAINS SQL 包含了SQL语句

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

解决方法:

1、是在创建子程序(存储过程、函数、触发器)时,声明为DETERMINISTIC或NO SQL与READS SQL DATA中的一个,

例如:

CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`()

    DETERMINISTIC

BEGIN

 #Routine body goes here...

END;;

2、第二种是信任子程序的创建者,禁止创建、修改子程序时对SUPER权限的要求,设置log_bin_trust_routine_creators全局系统变量为1。设置方法有三种:

1.在客户端上执行SET GLOBAL log_bin_trust_function_creators = 1;

2.MySQL启动时,加上--log-bin-trust-function-creators选贤,参数设置为1

3.在MySQL配置文件my.ini或my.cnf中的[mysqld]段上加log-bin-trust-function-creators=1

时间: 2024-11-05 22:53:55

MySQL3次导入报错解决笔记!的相关文章

iOS AFNetworking 2.6.0框架导入报错解决方法

最近手动导入AFNetworking 2.6.0框架时发现Xcode报如下3个错误: 1. Use of undeclared identifier ‘kSecFormatUnknown‘ 2. Use of undeclared identifier ‘kSecItemPemArmour‘ 3. Implicit declaration of function ‘SecItemExport‘ is invalid in C99 查询后发现, 解决方法有如下两种: 第一种: 通过CocoaPod

IMPDP导入报错ORA-27040: 文件创建错误, 无法创建文件,remap_datafile参数解决

该参数可用于给泵出文件中的源数据库文件重新指定一个新的路径和名称,主要用在平台间的数据迁移. 用法: remap_datafile=source_file:target_file 在windows平台上的使用: impdp dbuser/dbuser full=y dumpfile=full.dmp logfile=full.log remap_datafile="F:\DB\ORADB\ORADATA\ORADB\MYDB1.ORA":"F:\app\guester\ora

【软件工程 - SSM网页制作】报错解决 - Description Resource Path Location Type Cannot change version of project fac(导入maven项目出现红叉问题)

MAVEN项目报错解决 问题描述 导入项目时候出现 Description Resource Path Location Type Cannot change version of project facet Dynamic Web Module to 2.5错误 分析与解答 这是由于你的 Maven 编译级别是 jdk太低了 1.在eclipse的工程上选择属性,在选择Project Facets里面中选择Dynamic web Module,将版本改成2.5 如下图: 2.在工程目录下(项目

Eclipse @override报错解决

关键字: eclipse @override 报错 解决 第一种解决方案: @Override是JDK5 就已经有了,但有个小小的Bug,就是不支持对接口的实现,认为这不是Override而JDK6 修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上@Override 修改你的eclipse指定的编译器版本在选项里的java compiler中指定版本至少在5.0以上 在myEclipse中改变编译器的方法:Project->Properties->Java Compiler-

Android 工程报错解决 Unable to resolve target &#39;android-17&#39;

转自:http://www.cnblogs.com/csulennon/p/3705177.html 换了系统后,重新安装了Android SDK和ADT插件,导入之前的工作空间.居然发现所有的Android工程都报错了. 我之前的SDK版本是用的17,升级后用的是19. 1: [2014-05-03 14:56:25 - ThinkBlink] Unable to resolve target 'android-17' 2: [2014-05-03 14:56:26 - Game2048Pub

zabbix源码安装流程及报错解决方法

zabbix源码安装流程及报错解决方法 一. zabbix的介绍 1) zabbix是什么 zabbix是一款基于web页面的.开源的.企业级的,支持分布式部署的监控软件. 2)2.zabbix的作用 监控windows和Linux主机上的软硬件状态. 监控各网络设备,如路由器.交换机.防火墙.f5.打印机等. 支持邮件短信微信等平台发送告警通知. 通过web页面及图形展示监控数据. 3)zabbix的特性 由zabbix server和agent程序协同工作,还支持分布式监控,这时需要安装za

数据导入报错:Got a packet bigger than‘max_allowed_packet’bytes的问题

数据导入报错:Got a packet bigger than‘max_allowed_packet’bytes的问题 2个解决方法: 1.临时修改:mysql>set global max_allowed_packet=524288000;修改 #512M 2.修改my.cnf,需重启mysql. 在 [MySQLd] 部分添加一句(如果存在,调整其值就可以): max_allowed_packet=10M

mysql导入报错Variable &#39;sql_notes&#39; can&#39;t be set to the value of &#39;NULL&#39;

报错信息: 执行的SQL语句出错: /*!40111 SET [email protected]_SQL_NOTES */ 错误信息:Variable 'sql_notes' can't be set to the value of 'NULL' 检查: 错误信息是说sql_notes不能设置为null值,登录检查如下 mysql> select @@sql_notes; +-------------+ | @@sql_notes | +-------------+ |       1 | +-

使用Android Studio打开eclipse项目以及打开网上下载的studio项目报错解决办法

第一次使用markdown来写博客,不熟悉使用markdown用法的可以参考视频教程(http://edu.csdn.net/course/detail/508/) 下面来介绍一下标题的题目,之前刚接触Android Studio也是一头雾水,在此写下来和大家分享:] (一) . Andriod Studio下载网址:http://www.androiddevtools.cn/(好多最新开发工具)可以找到最新的稳定版本的zip压缩包,解压后就可以直接用,关联之前本地的SDK即可. (二). St