DataGrip 总体来说还比较好用,但某些操作还是需要适应一段时间,例如数据库数据的导出与导入

数据导出

导出的菜单在哪

  1. 如下图所示,右键选择指定数据库,在菜单中选择 Dump with ‘mysqldump’ ,实际上是使用 MySQL 原生的工具进行导出操作

导出操作如何进行

  1. 默认除了 Out path 以外都不需要修改,Out path 就是指导出的 SQL 文件保存目录
  • 选择自定义位置后还需要手动指定文件名称,例如下图中的 pts.sql 就是手动输入的

导出操作可能碰到的问题

导出时抛出 “does not exist when using LOCK TABLES” 错误
  1. 其实是数据库当前处于连接被使用状态,所以 MySQL 认为直接导出会出现数据不一致
  2. 在上图的导出界面最下方添加 --lock-all-tables -x 即可
  • 该操作实际上就是在导出时锁定所有表
  1. 参考自 51CTO博客
导出时抛出 “Unknown table ‘COLUMN_STATISTICS’ in information_schema (1109)” 错误
  1. 这是因为当前执行导出操作的 MySQL 版本是 8.x+ ,但需要被导出的数据库是由之前版本创建的
  2. 在 MySQL 8.x 之前的版本中,information_schema 数据库中没有 COLUMN_STATISTICS 数据表
  3. 在上图的导出界面最下方添加 --column-statistics=0 即可忽略这个表
  4. 参考自 对 column_statistics 的解释 ,以及 具体解决方式
导出时无法导出自定义事件
  1. 如下图所示,数据库中存在自定义事件,指定导出操作时,不会被一并导出,需要手动操作
  2. 目前还没找到解决办法

数据导入

导入的菜单在哪

  1. 如下图所示,右键菜单中存在 Run SQL Script 选项,但实际操作起来总是失败,具体原因为止

导入操作如何进行

  1. 其实只需要将导出的 SQL 文件,直接从外部拖拽到 DataGrip中即可
  2. 如果文件太大,可能会出现以下提示,不用在意
  3. 直接在文件中点击鼠标右键,出现如下菜单,选择 Run ‘pts.sql’ 即可
  4. 之后会出现如下图,选择需要导入数据的数据库即可

导入操作可能碰到的问题

导入自定义事件时抛出 “This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA …”
  1. 数据库默认开心了 bin-log 模式,对自定义事件存在诸多要求,这里不赘述
  2. 在 MySQL 终端执行 set global log_bin_trust_function_creators=1; ,即可解决