Ben*_*rme 0 mysql spring jdbc docker spring-boot
我尝试在 Docker 上运行带有 mysql 连接的 Springboot 应用程序。没有docker,它工作得很好。但是当我尝试在容器上部署时,我有com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure。\n我使用这个 docker-compose:
version: \'3\'\nservices:\n nginx:\n container_name: nginx\n image: nginx:latest\n restart: always\n ports:\n - 80:80\n - 443:443\n volumes:\n - ./nginx/conf.d:/etc/nginx/conf.d\n depends_on:\n - spring-boot-app\n\n\n mysql:\n container_name: mysql\n image: mysql:latest\n environment:\n MYSQL_ROOT_PASSWORD: "rootpass"\n MYSQL_DATABASE: "db"\n MYSQL_USER: "user"\n MYSQL_PASSWORD: "pass"\n ports:\n - "1306:3306"\n volumes:\n - ./data/:/var/lib/mysql\n networks: \n - mysql-db\n restart: always\n\n spring-boot-app:\n container_name: spring-boot-app\n image: spring-boot-app\n build:\n context: ./spring-boot-app\n dockerfile: Dockerfile\n ports:\n - "8080:8080"\n depends_on:\n - mysql\n networks: \n - mysql-db\n restart: always\n\nnetworks: \n mysql-db:\n driver: bridge\nRun Code Online (Sandbox Code Playgroud)\n\n这是 springboot 应用程序的 Dockerfile:
\n\nFROM openjdk:11\nCOPY target/spring-boot-app.jar /spring-boot-app/spring-boot-app.jar\nENTRYPOINT [ "java", "-jar", "-Dspring.profiles.active=prod","/spring-boot-app/spring-boot-app.jar" ]\nRun Code Online (Sandbox Code Playgroud)\n\n最后,这是 application.properties:
\n\nspring.datasource.url = jdbc:mysql://mysql:1306/db\nspring.datasource.username = user\nspring.datasource.password = pass\n\n# Show or not log for each sql query\nspring.jpa.show-sql = true\n\n# Hibernate ddl auto (create, create-drop, update)\nspring.jpa.hibernate.ddl-auto = update\n\n# Use spring.jpa.properties.* for Hibernate native properties (the prefix is\n# stripped before adding them to the entity manager)\n\n# The SQL dialect makes Hibernate generate better SQL for the chosen database\nspring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect\n\nserver.port=8080\nRun Code Online (Sandbox Code Playgroud)\n\n我不认为这是端口问题,因为我尝试将 mysql 设置为默认端口(3306),但它仍然不起作用。
\n\n如果有帮助的话,这里是docker ps:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n08ea16361c61 nginx:latest "nginx -g \'daemon of\xe2\x80\xa6" 1 second ago Up Less than a second 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp nginx\n52ef8d5c2127 spring-boot-app "java -jar -Dspring.\xe2\x80\xa6" 3 seconds ago Up 1 second 0.0.0.0:8080->8080/tcp spring-boot-app\n7bbcdc1fae3c mysql:latest "docker-entrypoint.s\xe2\x80\xa6" 4 seconds ago Up 3 seconds 33060/tcp, 0.0.0.0:1306->3306/tcp mysql\nRun Code Online (Sandbox Code Playgroud)\n\n编辑:完整堆栈跟踪:
\n\nubuntu@ubuntu:~/Documents/SpringBoot$ docker-compose up\nCreating network "springboot_mysql-db" with driver "bridge"\nCreating mysql ... done\nCreating spring-boot-app ... done\nAttaching to mysql, spring-boot-app\nmysql | 2019-05-27T21:50:19.645920Z 0 [Warning] [MY-011070] [Server] \'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it\' is deprecated and will be removed in a future release.\nmysql | 2019-05-27T21:50:19.645986Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.16) starting as process 1\nmysql | 2019-05-27T21:50:20.451523Z 0 [System] [MY-010229] [Server] Starting crash recovery...\nmysql | 2019-05-27T21:50:20.466040Z 0 [System] [MY-010232] [Server] Crash recovery finished.\nmysql | 2019-05-27T21:50:20.544487Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.\nmysql | 2019-05-27T21:50:20.551894Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location \'/var/run/mysqld\' in the path is accessible to all OS users. Consider choosing a different directory.\nmysql | 2019-05-27T21:50:20.584210Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: \'8.0.16\' socket: \'/var/run/mysqld/mysqld.sock\' port: 3306 MySQL Community Server - GPL.\nmysql | 2019-05-27T21:50:20.682338Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: \'/var/run/mysqld/mysqlx.sock\' bind-address: \'::\' port: 33060\nspring-boot-app | \nspring-boot-app | . ____ _ __ _ _\nspring-boot-app | /\\\\ / ___\'_ __ _ _(_)_ __ __ _ \\ \\ \\ \\\nspring-boot-app | ( ( )\\___ | \'_ | \'_| | \'_ \\/ _` | \\ \\ \\ \\\nspring-boot-app | \\\\/ ___)| |_)| | | | | || (_| | ) ) ) )\nspring-boot-app | \' |____| .__|_| |_|_| |_\\__, | / / / /\nspring-boot-app | =========|_|==============|___/=/_/_/_/\nspring-boot-app | :: Spring Boot :: (v2.1.5.RELEASE)\nspring-boot-app | \nspring-boot-app | 2019-05-27 21:50:22.884 INFO 1 --- [ main] com.jv.demo.DemoApplication : Starting DemoApplication v0.0.1-SNAPSHOT on c69469fd7461 with PID 1 (/spring-boot-app/spring-boot-app.jar started by root in /)\nspring-boot-app | 2019-05-27 21:50:22.903 INFO 1 --- [ main] com.jv.demo.DemoApplication : The following profiles are active: prod\nspring-boot-app | 2019-05-27 21:50:25.152 INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode.\nspring-boot-app | 2019-05-27 21:50:25.378 INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 205ms. Found 1 repository interfaces.\nspring-boot-app | 2019-05-27 21:50:26.313 INFO 1 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean \'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration\' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$e43b97d] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\nspring-boot-app | 2019-05-27 21:50:27.043 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)\nspring-boot-app | 2019-05-27 21:50:27.195 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]\nspring-boot-app | 2019-05-27 21:50:27.196 INFO 1 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.19]\nspring-boot-app | 2019-05-27 21:50:27.472 INFO 1 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext\nspring-boot-app | 2019-05-27 21:50:27.472 INFO 1 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 4316 ms\nspring-boot-app | 2019-05-27 21:50:27.928 INFO 1 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...\nspring-boot-app | 2019-05-27 21:50:29.226 ERROR 1 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization.\nspring-boot-app | \nspring-boot-app | com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure\nspring-boot-app | \nspring-boot-app | The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.\nspring-boot-app | at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) ~[mysql-connector-java-8.0.16.jar!/:8.0.16]\nspring-boot-app | at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) ~[mysql-connector-java-8.0.16.jar!/:8.0.16]\nspring-boot-app | at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835) ~[mysql-connector-java-8.0.16.jar!/:8.0.16]\nspring-boot-app | at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:455) ~[mysql-connector-java-8.0.16.jar!/:8.0.16]\nspring-boot-app | at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240) ~[mysql-connector-java-8.0.16.jar!/:8.0.16]\nspring-boot-app | at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:199) ~[mysql-connector-java-8.0.16.jar!/:8.0.16]\nspring-boot-app | at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:136) ~[HikariCP-3.2.0.jar!/:na]\nspring-boot-app | at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369) ~[HikariCP-3.2.0.jar!/:na]\nspring-boot-app | at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198) ~[HikariCP-3.2.0.jar!/:na]\nspring-boot-app | at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467) ~[HikariCP-3.2.0.jar!/:na]\nspring-boot-app | at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541) ~[HikariCP-3.2.0.jar!/:na]\nspring-boot-app | at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) ~[HikariCP-3.2.0.jar!/:na]\nspring-boot-app | at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-3.2.0.jar!/:na]\nspring-boot-app | at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:157) ~[spring-jdbc-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:115) ~[spring-jdbc-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:78) ~[spring-jdbc-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:319) ~[spring-jdbc-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:356) ~[spring-jdbc-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.boot.autoconfigure.orm.jpa.DatabaseLookup.getDatabase(DatabaseLookup.java:73) ~[spring-boot-autoconfigure-2.1.5.RELEASE.jar!/:2.1.5.RELEASE]\nspring-boot-app | at org.springframework.boot.autoconfigure.orm.jpa.JpaProperties.determineDatabase(JpaProperties.java:142) ~[spring-boot-autoconfigure-2.1.5.RELEASE.jar!/:2.1.5.RELEASE]\nspring-boot-app | at org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration.jpaVendorAdapter(JpaBaseConfiguration.java:113) ~[spring-boot-autoconfigure-2.1.5.RELEASE.jar!/:2.1.5.RELEASE]\nspring-boot-app | at org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration$$EnhancerBySpringCGLIB$$2d1a7bec.CGLIB$jpaVendorAdapter$5(<generated>) ~[spring-boot-autoconfigure-2.1.5.RELEASE.jar!/:2.1.5.RELEASE]\nspring-boot-app | at org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration$$EnhancerBySpringCGLIB$$2d1a7bec$$FastClassBySpringCGLIB$$cb57d9da.invoke(<generated>) ~[spring-boot-autoconfigure-2.1.5.RELEASE.jar!/:2.1.5.RELEASE]\nspring-boot-app | at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363) ~[spring-context-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration$$EnhancerBySpringCGLIB$$2d1a7bec.jpaVendorAdapter(<generated>) ~[spring-boot-autoconfigure-2.1.5.RELEASE.jar!/:2.1.5.RELEASE]\nspring-boot-app | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]\nspring-boot-app | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]\nspring-boot-app | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]\nspring-boot-app | at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]\nspring-boot-app | at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:456) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1321) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1248) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1168) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:857) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:760) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:509) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1321) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1248) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1168) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:857) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:760) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:509) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1321) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.7.RELEASE.jar!/:5.1.7.RELEASE]\nspring-boot-app | at org.springframework.beans.factory
由于您的 Spring Boot 应用程序也是在 docker 镜像中启动的,因此您无法使用 docker 公开的端口,而是需要使用镜像的原始端口。
在application.properties你需要使用:
spring.datasource.url = jdbc:mysql://mysql:3306/db
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4187 次 |
| 最近记录: |