entrypoint: bash -c "DBs=($${DATABASES//,/ }); for db in $${DBs[@]}; do echo "'"CREATE DATABASE IF NOT EXISTS $$db;"'" >> /docker-entrypoint-initdb.d/create_databases.sql; done; /usr/local/bin/docker-entrypoint.sh --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci "
方法二:
1 2 3 4 5 6 7 8
entrypoint:: sh -c " echo ' CREATE DATABASE IF NOT EXISTS db1; CREATE DATABASE IF NOT EXISTS db2; ' >> /docker-entrypoint-initdb.d/create_databases.sql; /usr/local/bin/docker-entrypoint.sh "
entrypoint:: sh -c " echo "'" USE mysql;\n DELIMITER //\n DROP PROCEDURE IF EXISTS temp112233;\n CREATE PROCEDURE temp112233()\n BEGIN\n DECLARE var varchar(500) DEFAULT \"$${DATABASES}\";\n DECLARE db varchar(50);\n WHILE var != \"\" DO\n IF LOCATE(\",\", var) > 0 THEN\n SET db = SUBSTRING(var,1, LOCATE(\",\", var)-1);\n SET var = SUBSTRING(var, LOCATE(\",\", var) + 1);\n ELSE\n SET db = var;\n SET var = \"\";\n END IF;\n SET @query = CONCAT(\"CREATE DATABASE IF NOT EXISTS \`\", db, \"\`\");\n PREPARE stmt FROM @query;\n EXECUTE stmt;\n DEALLOCATE PREPARE stmt;\n END WHILE;\n END; //\n DELIMITER ;\n call temp112233();\n DROP PROCEDURE IF EXISTS temp112233;"'" >>/docker-entrypoint-initdb.d/create_databases.sql; /usr/local/bin/docker-entrypoint.sh --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci"
USE mysql; DELIMITER // DROPPROCEDURE IF EXISTS temp112233; CREATEPROCEDURE temp112233() BEGIN DECLARE var varchar(300) DEFAULT "db12,db13,db14"; DECLARE mydb varchar(20); WHILE var !='' DO IF LOCATE(",", var) >0THEN SET mydb =SUBSTRING(var,1, LOCATE(",", var)-1); SET var =SUBSTRING(var, LOCATE(",", var) +1); ELSE SET mydb = var; SET var ='' ; END IF; -- 使用变量创建数据库 SET@query= CONCAT('CREATE DATABASE IF NOT EXISTS `', mydb, '`'); PREPARE stmt FROM@query; EXECUTE stmt; DEALLOCATEPREPARE stmt; select var as var ,mydb as mydb; END WHILE; END; // DELIMITER ; call temp112233();
方法四:
1 2
RUN set -ex; \ echo ${DATABASES} | awk -F, '{for(i=1;i<=NF;i++){print "CREATE DATABASE IF NOT EXISTS " $i ";"}}' >/docker-entrypoint-initdb.d/add_new_databases.sql;