mysql version: mysql5.7.18

OS version:CentOS Linux release 7.3

场景:在使用hadoop过程中,访问mysql数据库时,报如下错误信息:

“User can't run DDL statements on the specified database. Attempt to create and drop a table failed.”


原因:在mysql5.7中使用了 GTID模式,引入了GTID参数,如下所示

gtid_mode = ON
enforce_gtid_consistency = ON

enforce_gtid_consistency 强制GTID一致性, 启用后以下命令无法再使用
create table ... select ...

但是在hadoop在使用过程中,恰好使用了上述中的建表语句,所以导致了失败。

具体一点就是create table ... select ...在启用强制GTID后,其实是两个独立事件,不符合强一致性的规则,所以创建失败。


解决方法:暂时的解决方案为,由于环境并不是很重要,所以先把GTID模式停了;

gtid_mode = off
enforce_gtid_consistency = off

修改参数后,重新启动数据库。

其它解决方法:把create table ... select 分解为2个sql来进行,即可解决。


扩展:启用强制GTID一致性的副作用:

(1) 不能同时揉合多个事件;

(2) 事务内部不能创建临时表;

create temporary table

(3) 不能在同一事务中即更新InnoDB表,又更新MyISAM表。




更多相关文章

  1. android-exploitme(四):参数篡改
  2. 如何在函数中将两个参数从1个类传递给另一个?
  3. Android的startActivityForResult()与onActivityResult()与setRe
  4. Android开发入门之为应用添加多个Activity与参数传递
  5. java socket参数详解:TcpNoDelay
  6. 在spring 中如何注入map,set,list,property等参数
  7. 如何将动态参数传递给jquery函数
  8. 使用字符串参数调用AndroidJni静态方法。
  9. Java开发水吧点饮品系统(顶层父类对象做接口参数)

随机推荐

  1. android与gitlab的结合使用
  2. Android suspend/resume flow (上篇: Use
  3. Android(安卓)View Animation Example
  4. 【Android】android按钮的四种点击事件
  5. 编译Android donut
  6. Android(安卓)的布局优化
  7. 详解Android系统中的root权限获得原理
  8. android:windowSoftInputMode用法
  9. scrollview中使用recyclerview莫名自动上
  10. Android学习笔记之mainfest文件中android