在 Spring Framework petclinic 中配置具有多个参数的 JDBC URL 时,& 和 & 均不起作用
Both & and & do not work when configuring a JDBC URL with more than one parameter in Spring Framework petclinic
当尝试在 STS 中使用带有 jetty:run-war -P MySQL 选项的 spring-framework-petclinic-master 应用程序时,我需要传递几个参数在 MySQL JDBC URL 中没有典型的选项有效,
jdbc:mysql://localhost:3306/petclinic?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
或
jdbc:mysql://localhost:3306/petclinic?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
成功了
您需要使用 CDATA 对 URL 进行双重转义,以便 XML 验证器忽略 & 然后使用 & 因为 JDBC 字符串是通过 XML 验证处理的.
以下确实有效:
<properties>
<db.script>mysql</db.script>
<jpa.database>MYSQL</jpa.database>
<jdbc.driverClassName>com.mysql.cj.jdbc.Driver</jdbc.driverClassName>
<jdbc.url><![CDATA[jdbc:mysql://localhost:3306/petclinic?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC]]></jdbc.url>
<jdbc.username>petclinic</jdbc.username>
<jdbc.password>petclinic</jdbc.password>
</properties>
当尝试在 STS 中使用带有 jetty:run-war -P MySQL 选项的 spring-framework-petclinic-master 应用程序时,我需要传递几个参数在 MySQL JDBC URL 中没有典型的选项有效,
jdbc:mysql://localhost:3306/petclinic?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
或
jdbc:mysql://localhost:3306/petclinic?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
成功了
您需要使用 CDATA 对 URL 进行双重转义,以便 XML 验证器忽略 & 然后使用 & 因为 JDBC 字符串是通过 XML 验证处理的. 以下确实有效:
<properties>
<db.script>mysql</db.script>
<jpa.database>MYSQL</jpa.database>
<jdbc.driverClassName>com.mysql.cj.jdbc.Driver</jdbc.driverClassName>
<jdbc.url><![CDATA[jdbc:mysql://localhost:3306/petclinic?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC]]></jdbc.url>
<jdbc.username>petclinic</jdbc.username>
<jdbc.password>petclinic</jdbc.password>
</properties>