当我们需要进行数据库迁移,而数据又是从低版本的mysql迁移到高版本的mysql使用,使用mysqldump命令导出数据库,所导出的SQL中会有许多的注释信息,如下:
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
而这些注释信息其实是有意义的,/*! 后面的数字,其实是MYSQL版本号信息,意思是当版本号高于或等于注释里的版本号时,里面的SET命令会被执行。
这种情况下,有时候在高版本执行时,会报错。这时候,就可以使用sed命令,将SQL中的注释行去掉,再执行就没问题了。
如SQL文件为:test.sql
去掉注释行的命令如下:sed -i '/^\//d' test.sql
去掉后,然后再用source 或mysql 命令导入sql
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。