DataGrip 总体来说还比较好用,但某些操作还是需要适应一段时间,例如数据库数据的导出与导入
数据导出
导出的菜单在哪
- 如下图所示,右键选择指定数据库,在菜单中选择 Dump with ‘mysqldump’ ,实际上是使用 MySQL 原生的工具进行导出操作
导出操作如何进行
- 默认除了 Out path 以外都不需要修改,Out path 就是指导出的 SQL 文件保存目录
- 选择自定义位置后还需要手动指定文件名称,例如下图中的 pts.sql 就是手动输入的
导出操作可能碰到的问题
导出时抛出 “does not exist when using LOCK TABLES” 错误
- 其实是数据库当前处于连接被使用状态,所以 MySQL 认为直接导出会出现数据不一致
- 在上图的导出界面最下方添加
--lock-all-tables -x
即可
- 该操作实际上就是在导出时锁定所有表
- 参考自 51CTO博客
导出时抛出 “Unknown table ‘COLUMN_STATISTICS’ in information_schema (1109)” 错误
- 这是因为当前执行导出操作的 MySQL 版本是 8.x+ ,但需要被导出的数据库是由之前版本创建的
- 在 MySQL 8.x 之前的版本中,
information_schema
数据库中没有COLUMN_STATISTICS
数据表 - 在上图的导出界面最下方添加
--column-statistics=0
即可忽略这个表 - 参考自 对 column_statistics 的解释 ,以及 具体解决方式
导出时无法导出自定义事件
- 如下图所示,数据库中存在自定义事件,指定导出操作时,不会被一并导出,需要手动操作
- 目前还没找到解决办法
数据导入
导入的菜单在哪
- 如下图所示,右键菜单中存在 Run SQL Script 选项,但实际操作起来总是失败,具体原因为止
导入操作如何进行
- 其实只需要将导出的 SQL 文件,直接从外部拖拽到 DataGrip中即可
- 如果文件太大,可能会出现以下提示,不用在意
- 直接在文件中点击鼠标右键,出现如下菜单,选择 Run ‘pts.sql’ 即可
- 之后会出现如下图,选择需要导入数据的数据库即可
导入操作可能碰到的问题
导入自定义事件时抛出 “This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA …”
- 数据库默认开心了 bin-log 模式,对自定义事件存在诸多要求,这里不赘述
- 在 MySQL 终端执行
set global log_bin_trust_function_creators=1;
,即可解决