我已经创建了一个MySQL停靠容器
sudo docker run -d --name db-mysql -e MYSQL_ROOT_PASSWORD=mypassword -e MYSQL_DATABASE=DB mysql我有schema.sql来创建模式
DROP DATABASE IF EXISTS `DB`;
CREATE DATABASE `DB`;
USE `DB`;
DROP TABLE IF EXISTS `Occurrences`;
CREATE TABLE `Occurrences` (
`IdOccurrence` int NOT NULL AUTO_INCREMENT,
`Name` varchar(100) NOT NULL,
`Min_probability` double NOT NULL,
PRIMARY KEY (`IdOccurrence`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
INSERT INTO `Occurrences` VALUES (1,'Frequent',20),(2,'Probable',10),(5,'Possible',1),(6,'Rare',0.1),(7,'Remote',0);并尝试导入它(在Ubuntu18.04中)
sudo docker exec db-mysql mysql -uroot -pmypassword DB < schema.sql然而,我收到了这个警告
mysql: [Warning] Using a password on the command line interface can be insecure.但是数据库DB仍然是空的。
我的错误在哪里?
发布于 2020-03-10 13:57:22
正如在文献资料中为码头映像所述,您可以使用sql脚本初始化容器:
当容器首次启动时,将创建具有指定名称的新数据库,并使用提供的配置变量进行初始化。此外,它将执行扩展名为.sh、.sql和.sql.gz的文件,这些文件位于/initdb.d中。文件将按字母顺序执行。您可以通过将SQL转储安装到该目录并提供包含贡献数据的自定义映像来轻松填充mysql服务。默认情况下,SQL文件将导入到MYSQL_DATABASE变量指定的数据库中。
因此,如果您使用以下方式启动容器,则应该使用您的模式启动:
sudo docker run -d --name db-mysql -e MYSQL_ROOT_PASSWORD=mypassword -e MYSQL_DATABASE=DB -v $PWD/schema.sql:/docker-entrypoint-initdb.d/schema.sql mysqlhttps://stackoverflow.com/questions/60616709
复制相似问题