我用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.sql
或DockerFile
创建表格。
这是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
答案 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)
}