Java 第1行出现错误1007(HY000):Can';t创建数据库';mgsv&x27;;数据库存在

Java 第1行出现错误1007(HY000):Can';t创建数据库';mgsv&x27;;数据库存在,java,php,mysql,docker,docker-compose,Java,Php,Mysql,Docker,Docker Compose,我将此项目转换为docker compose项目,并遵循他们的设置。我似乎无法与浏览器连接 包含数据库架构,如下所示: CREATE DATABASE mgsv; CREATE USER 'mgsv_user'@'localhost' IDENTIFIED BY 'mgsvpass'; GRANT SELECT, INSERT, CREATE, DROP ON mgsv.* TO 'mgsvuser'@'localhost'; use mgsv; CREATE TABLE IF NOT EXIS

我将此项目转换为docker compose项目,并遵循他们的设置。我似乎无法与浏览器连接

包含数据库架构,如下所示:

CREATE DATABASE mgsv;
CREATE USER 'mgsv_user'@'localhost' IDENTIFIED BY 'mgsvpass';
GRANT SELECT, INSERT, CREATE, DROP ON mgsv.* TO 'mgsvuser'@'localhost';
use mgsv;
CREATE TABLE IF NOT EXISTS `userinfo` (
    `id` int(10) NOT NULL AUTO_INCREMENT,
    `email` text NOT NULL,
    `hash` text NOT NULL,
    `synfilename` text NOT NULL,
    `annfilename` text NOT NULL,
    `url` text NOT NULL,
    `session_id` text NOT NULL,
    `annImage`   int(5) NOT NULL,
    `create_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`)
        ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
version: '3.1'

services:
  db:
    image: mysql
    restart: always
    environment:
      - MYSQL_DATABASE=mgsv
      - MYSQL_USER=mgsv_user
      - MYSQL_PASSWORD=mgsvpass
      - MYSQL_ROOT_PASSWORD=mysql123
    volumes:
      - ./mysql:/docker-entrypoint-initdb.d

  www:
    build: ./mGSV 
    restart: always
    ports:
      - 8080:8080
下面的示例如下所示:

CREATE DATABASE mgsv;
CREATE USER 'mgsv_user'@'localhost' IDENTIFIED BY 'mgsvpass';
GRANT SELECT, INSERT, CREATE, DROP ON mgsv.* TO 'mgsvuser'@'localhost';
use mgsv;
CREATE TABLE IF NOT EXISTS `userinfo` (
    `id` int(10) NOT NULL AUTO_INCREMENT,
    `email` text NOT NULL,
    `hash` text NOT NULL,
    `synfilename` text NOT NULL,
    `annfilename` text NOT NULL,
    `url` text NOT NULL,
    `session_id` text NOT NULL,
    `annImage`   int(5) NOT NULL,
    `create_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`)
        ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
version: '3.1'

services:
  db:
    image: mysql
    restart: always
    environment:
      - MYSQL_DATABASE=mgsv
      - MYSQL_USER=mgsv_user
      - MYSQL_PASSWORD=mgsvpass
      - MYSQL_ROOT_PASSWORD=mysql123
    volumes:
      - ./mysql:/docker-entrypoint-initdb.d

  www:
    build: ./mGSV 
    restart: always
    ports:
      - 8080:8080
其中包含PHP和所有其他工具设置,如下所示

FROM php:5-apache

RUN apt-get update  && apt-get install -y --no-install-recommends \
                openjdk-7-jdk \
                maven  \
        git \
        && rm -rf /var/lib/apt/lists/*

RUN git clone https://github.com/qunfengdong/mGSV.git

# Move the folder 'mgsv' to DocumentRoot of Apache web server. By default, the DocumentRoot of Apache is /var/www/ (speak to the system administrator to know the exact DocumentRoot).
RUN cd /var/www/html/mGSV \
    && mkdir tmp \
    && chmod -R 777 tmp

RUN cd /var/www/html/mGSV && sed -i.bak "s|'gsv'|'mgsv_user'|" lib/settings.php \ 
    && sed -i.bak "s|$database_pass = ''|$database_pass = 'mgsvpass'|" lib/settings.php \
    && sed -i.bak "s|cas-qshare.cas.unt.edu|localhost|" lib/settings.php

RUN cp /var/www/html/mGSV/Arial.ttf /usr/share/fonts/truetype/

#Do not understand
#7. Cleanup scripts are provided to drop database synteny and annotation tables, remove entries from database table 'userinfo' and delete the folder containing image files which are older than 60 days. This task is accomplished by cron job to run the cleanup script every day. To create a cron job, use the command below:
#   shell> crontab -e

#At the last line of crontab, copy and paste the line below, and provide the exact path to mgsv/lib/cleanup.php
#   30 04 * * * /var/www/mgsv/lib/cleanup.php

#The script cleanup.php will be executed at 4:30 AM every morning.

#8. mGSV uses the mail function from PHP to send email to users. Speak to your system administrator to provide required information in the PHP configuration file called 'php.ini'.

#9. When installation completes, you can now open Install/index.php (i.e., http://<YOUR_SERVER_DOMAIN_NAME>/mgsv/Install/), which verifies prerequisites, database setup, and installation. YOUR_SERVER_DOMAIN_NAME refers to the domain name of your server.


RUN cd /var/www/html/mGSV/ws \
    && tar -xzf mgsv-ws-server.tar.gz

RUN cd /var/www/html/mGSV/ws/mgsv-ws-server \ 
    && mvn package

RUN cp -f /var/www/html/mGSV/ws/mgsv-ws-server/target/ws-server-1.0RC1-jar-with-dependencies.jar /var/www/html/mGSV/ws/

RUN cd /var/www/html/mGSV/ws \ 
    && echo "mgsv_upload_url=http://localhost/mgsv" > config.properties \
    && echo "ws_publish_url=http\://localhost\:8081/MGSVService" >> config.properties \
    && java -jar ws-server-1.0RC1-jar-with-dependencies.jar &

#To stop the web service
#shell> ps aux | grep ws-server-1.0RC1-jar-with-dependencies.jar
#*Note the process id from the output*
#shell> kill -9 <process id>
我不太确定我是否在文件或数据库配置中犯了错误

有没有人知道我错过了什么


提前感谢您

您在docker-compose.yml文件中为MYSQL容器设置了环境变量“MYSQL_DATABASE=mgsv”。当创建并启动mysql容器时,它将自动创建数据库mgsv,并允许用户mgsv_user(由环境变量“mysql_user=mgsv_user”指定)访问它。有关详细信息,您可以查看mysql映像


您应该做的是,从SQL文件中删除语句“createdatabasemgsv;”,或者将该语句更改为“createdatabaseif-notexistingmgsv;”。您可能还需要调整该SQL文件中的其他语句(例如,在这种情况下不需要用户创建)。

您在docker-compose.yml文件中为MYSQL容器设置了环境变量“MYSQL_DATABASE=mgsv”。当创建并启动mysql容器时,它将自动创建数据库mgsv,并允许用户mgsv_user(由环境变量“mysql_user=mgsv_user”指定)访问它。有关详细信息,您可以查看mysql映像


您应该做的是,从SQL文件中删除语句“createdatabasemgsv;”,或者将该语句更改为“createdatabaseif-notexistingmgsv;”。您可能还需要调整该SQL文件中的其他语句(例如,在这种情况下不需要用户创建)。

谢谢,我在第2行发现了一个新错误
db|u 1 |错误1064(42000):您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解在第1行“mgsvpass”标识的“mgsv_user@“localhost”附近使用的正确语法。我在这里遗漏了什么?我在第3行出现了
错误1133(42000):在修复了上述错误后,在用户表中找不到任何匹配的行。我遗漏了什么?您也应该从SQL文件中删除GRANT语句。根据我引用的官方文档:“此变量是可选的,允许您指定要在映像启动时创建的数据库的名称。如果提供了用户/密码(请参见下文),则该用户将被授予超级用户访问此数据库的权限(对应于授予所有权限)。”谢谢,我在第2行得到了一个新的错误:SQL语法中有一个错误;检查与MySQL服务器版本对应的手册,以了解在第1行“mgsvpass”标识的“mgsv_user@“localhost”附近使用的正确语法。我在这里遗漏了什么?我在第3行出现了
错误1133(42000):在修复了上述错误后,在用户表中找不到任何匹配的行。我遗漏了什么?您也应该从SQL文件中删除GRANT语句。根据我引用的官方文档:“此变量是可选的,允许您指定要在映像启动时创建的数据库的名称。如果提供了用户/密码(见下文),则该用户将被授予对此数据库的超级用户访问权(对应于“全部授予”)