MySQL“创建表”在Docker镜像中不起作用

时间:2019-07-31 07:26:50

标签: mysql docker docker-compose

我用mysql制作docker镜像。

启动docker文件时,我创建了 java.lang.IllegalArgumentException: operating on too many entity groups in a single transaction. at com.google.appengine.api.datastore.DatastoreApiHelper.translateError(DatastoreApiHelper.java:52) at com.google.appengine.api.datastore.DatastoreApiHelper$1.convertException(DatastoreApiHelper.java:135) at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:109) at com.google.appengine.api.datastore.Batcher$ReorderingMultiFuture.get(Batcher.java:115) at com.google.appengine.api.datastore.FutureHelper$TxnAwareFuture.get(FutureHelper.java:186) at com.googlecode.objectify.cache.TriggerFuture.get(TriggerFuture.java:100) at com.googlecode.objectify.impl.ResultAdapter.now(ResultAdapter.java:34) at com.googlecode.objectify.util.ResultWrapper.translate(ResultWrapper.java:22) at com.googlecode.objectify.util.ResultWrapper.translate(ResultWrapper.java:10) at com.googlecode.objectify.util.ResultTranslator.nowUncached(ResultTranslator.java:21) at com.googlecode.objectify.util.ResultCache.now(ResultCache.java:30) at com.googlecode.objectify.util.ResultWrapper.translate(ResultWrapper.java:22) at com.googlecode.objectify.util.ResultWrapper.translate(ResultWrapper.java:10) at com.googlecode.objectify.util.ResultTranslator.nowUncached(ResultTranslator.java:21) at com.googlecode.objectify.util.ResultCache.now(ResultCache.java:30) com.vivoiz.healofy.backend.commonServices.services.AbstractTransaction.save(AbstractTransaction.java:44) 文件来创建表。

但是在构建docker映像之后,不会创建表。

我想通过init.sqlDockerFile创建表格。

这是github中的源代码。 https://github.com/jpskgc/article

我创建了docker-compose文件和int.sql以使用此docker-compose.yml文件。

init.sql
article
 ├ db
 │  └ init.sql
 │  
 └ docker-compose.yml
//docker-compose.yml
version: '3'
services:
  db:
    image: mysql
    ports:
      - '3306:3306'
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: article
      MYSQL_USER: docker
      MYSQL_PASSWORD: docker
    volumes:
      - ./db:/docker-entrypoint-initdb.d

我想在//init.sql CREATE DATABASE IF NOT EXISTS article; use article; CREATE TABLE IF NOT EXISTS `articles` (`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, uuid varchar(36), `title` VARCHAR(100) NOT NULL,`content` TEXT NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8; create table IF NOT EXISTS images (id int AUTO_INCREMENT NOT NULL PRIMARY KEY, article_uuid varchar(36), image_name varchar(50)); 的过程中创建表。 在命令docker-compose up --build并评估为'http://localhost:3000/'之后,后端出现错误,这表明该表不存在。

docker-compose up --build

1 个答案:

答案 0 :(得分:0)

作为替代解决方案,我更改了服务器端代码以创建表。

    _, err = db.Exec("CREATE DATABASE IF NOT EXISTS article;")
    if err != nil {
        panic(err)
    }

    _, err = db.Exec("use article;")
    if err != nil {
        panic(err)
    }

    _, err = db.Exec("CREATE TABLE IF NOT EXISTS `articles` (`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,uuid varchar(36), `title` VARCHAR(100) NOT NULL,`content` TEXT NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;")
    if err != nil {
        panic(err)
    }

    _, err = db.Exec("create table IF NOT EXISTS images (id int AUTO_INCREMENT NOT NULL PRIMARY KEY, article_uuid varchar(36), image_name varchar(50)); ")
    if err != nil {
        panic(err)
    }