- SpringBoot中MySQL连接字符串配置样例:
spring:
datasource:
url: jdbc:mysql://localhost:3306/<database_name>?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&characterEncoding=UTF-8
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
- MySQL连接字符串后面可携带的参数包括:
useUnicode
,characterEncoding
,autoReconnect
,failOverReadOnly
,maxReconnects
,socketTimeout
,connectTimeout
,useCompression
,useSSL
,requireSSL
,verifyServerCertificate
,useLegacyDatetimeCode
,serverTimezone
,useJDBCCompliantTimezoneShift
,useGmtMillisForDatetimes
,dumpQueriesOnException
,emulateUnsupportedPstmts
,allowMultiQueries
,poolName
, 等等。
以下是完整的MySQL连接字符串示例:
jdbc:mysql://<host>:<port>/<database_name>?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&maxReconnects=<number>&socketTimeout=<ms>&connectTimeout=<ms>&useCompression=true/false&useSSL=true/false&requireSSL=true/false&verifyServerCertificate=true/false&useLegacyDatetimeCode=true/false&serverTimezone=<timezone>&useJDBCCompliantTimezoneShift=true/false&useGmtMillisForDatetimes=true/false&dumpQueriesOnException=true/false&emulateUnsupportedPstmts=true/false&allowMultiQueries=true/false&poolName=<pool_name>
- 下表详细解释了MySQL连接字符串后面各个参数的用途和注意事项:
参数 | 值 | 用途 | 注意事项 |
---|---|---|---|
useUnicode | true /false | 指定是否使用 Unicode 字符集。 | 如果不设置或设置为 false,可能会导致插入和查询出现乱码。 |
characterEncoding | utf8 /gbk 等 | 指定字符编码集。 | 可以根据具体情况选择合适的字符编码集。 |
autoReconnect | true /false | 是否自动重新连接。 | 如果设置为 true,可能会导致系统负载过大。 |
failOverReadOnly | true /false | 当连接指向主数据库时,如果主数据库失效,是否切换到从数据库。 | 主数据库故障时才使用,一般没必要设置。 |
maxReconnects | 整数 | 设置尝试重新连接的最大次数。 | 连接失败后将重新尝试连接。 |
socketTimeout | 毫秒数 | 套接字超时时间。 | 如果套接字超时,则连接被视为失败。 |
connectTimeout | 毫秒数 | 连接超时时间。 | 如果连接超过此时间,则连接被视为失败。 |
useCompression | true /false | 是否启用压缩。 | 该参数可提高数据传输效率。 |
useSSL | true /false | 是否启用 SSL 连接。 | 如果数据库本身不支持 SSL 连接,则该参数设置为 true 会导致连接失败。 |
requireSSL | true /false | 是否要求使用 SSL 连接。 | 只接受 SSL 连接。 |
verifyServerCertificate | true /false | 是否验证服务器证书。 | 默认情况下,MySQL 不验证服务器证书。 |
useLegacyDatetimeCode | true /false | 是否使用旧版日期时间代码。 | 如果设置为 true,将使用旧版的 MySQL 日期时间代码。 |
serverTimezone | UTC /GMT+8 等 | 指定时区。 | 时区的设置应该与服务器所在时区相同,否则可能会影响时间戳等操作。 |
useJDBCCompliantTimezoneShift | true /false | 是否将 Java 时间转换为 JDBC 规范的时间格式。 | 如果设置为 true,则将使用 JDBC 规范的时间格式。如果设置为 false,则将使用 MySQL 特定的时间格式。 |
useGmtMillisForDatetimes | true /false | 是否使用 GMT 毫秒数作为日期时间值。 | 如果设置为 true,则将使用 GMT 毫秒数作为日期时间值。如果设置为 false,则将使用本地时区的绝对毫秒数。 |
dumpQueriesOnException | true /false | 是否在异常时打印 SQL 查询语句。 | 只有在调试期间才需要设置为 true。默认情况下,不会打印 SQL 查询语句。 |
emulateUnsupportedPstmts | true /false | 是否模拟不支持预处理语句的情况。 | 如果设置为 true,则将模拟不支持预处理语句的情况。如果设置为 false,则会尝试使用预处理语句。 |
allowMultiQueries | true /false | 是否允许一次执行多个查询。 | 只有在特定的情况下才需要启用此选项。否则会增加安全风险。 |
poolName | 字符串 | 连接池的名称。 | 如果使用连接池,则需要为连接池指定一个名称。 |
注意:以上参数并非全部可用,具体应根据实际情况选择合适的参数和值。