当我们需要进行数据库迁移,而数据又是从低版本的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


tfnkhcel
7 声望0 粉丝