This is an automated email from the ASF dual-hosted git repository.

jimin pushed a commit to branch docusaurus
in repository https://gitbox.apache.org/repos/asf/incubator-seata-website.git


The following commit(s) were added to refs/heads/docusaurus by this push:
     new cb49c823902 fix: fix the wrong faq version (#1077)
cb49c823902 is described below

commit cb49c8239029586b89382b05146f8740a763bcf9
Author: lokidundun <[email protected]>
AuthorDate: Mon Apr 6 13:57:35 2026 +0800

    fix: fix the wrong faq version (#1077)
---
 .../current/overview/faq.md                        |  29 ++-
 .../version-v2.6/overview/faq.md                   | 267 ++++++++++++++++++++-
 .../current/overview/faq.md                        | 168 +++++++------
 .../version-v2.6/overview/faq.md                   | 192 +++++++++------
 4 files changed, 476 insertions(+), 180 deletions(-)

diff --git a/i18n/en/docusaurus-plugin-content-docs/current/overview/faq.md 
b/i18n/en/docusaurus-plugin-content-docs/current/overview/faq.md
index 78b2677f9d0..6c7e4a0a89d 100644
--- a/i18n/en/docusaurus-plugin-content-docs/current/overview/faq.md
+++ b/i18n/en/docusaurus-plugin-content-docs/current/overview/faq.md
@@ -144,6 +144,9 @@ Error: A fatal exception has occurred. Program will 
exit.?</a>
 <a href="#45" target="_self">45. Why do namingserver and console require JDK 
25 for packaging and compiling? & Why are namingserver and console not involved 
in the compilation and packaging process? </a>
 <br/>
 
+<a href="#46" target="_self">46. Why does Seata report 
LockWaitTimeoutException due to table name case sensitivity in global 
transaction lock reentrancy? </a>
+<br/>
+
 ---
 
 <h3 id='1'>Q: 1.Can Seata be used in a production environment?</h3>
@@ -180,7 +183,7 @@ Since seata phase 1 local transactions have been committed, 
enhanced isolation i
 1. Dirty read Select statement with for update, proxy method with 
@GlobalLock+@Transactional or @GlobalTransaction
 2. Dirty write You must use @GlobalTransactional
 
-   note:If the interface of the business you are querying does not use the 
@GlobalTransactional annotation, which means there is no need for distributed 
transactions on the method, you can annotate the @globallock+@Transactional 
annotation on the method and add a for update statement to the query.
+   note: If the interface of the business you are querying does not use the 
@GlobalTransactional annotation, which means there is no need for distributed 
transactions on the method, you can annotate the @globallock+@Transactional 
annotation on the method and add a for update statement to the query.
    If your query interface has the @GlobalTransactional annotation on the 
outer edge of the transactional link, you can simply add a for update statement 
to your query. The reason for designing this annotation is that before it is 
available, distributed transactions need to query the committed data, but the 
business does not need distributed transactions.
    Using the @GlobalTransactional annotation adds some unnecessary additional 
RPC overhead such as begin returning xid, commit transaction, etc. GlobalLock 
simplifies the RPC process for higher performance.
 
@@ -193,7 +196,7 @@ Since seata phase 1 local transactions have been committed, 
enhanced isolation i
 1. The dirty data needs to be processed manually, and the data can be 
corrected according to the log prompt, or the corresponding undo can be deleted 
(the FailureHandler can be customized for email notification or other purposes).
 2. This option is not recommended when "undo" mirror validation is turned off 
during rollback.
 
-   node:It is recommended to isolate the dirty data in advance
+   node: It is recommended to isolate the dirty data in advance
 
 ---
 
@@ -237,7 +240,7 @@ abnormal:io.seata.common.exception.FrameworkException: can 
not register RM,err
    Error: A fatal exception has occurred. Program will exit.
 ```
 
- If the environment is sh, replace the last paragraph in the script:
+ If the environment is sh, replace the last paragraph in the script:
 
 ```shell
         exec "$JAVACMD" $JAVA_OPTS -server -Xmx2048m -Xms2048m -Xmn1024m 
-Xss512k -XX:SurvivorRatio=10 -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m 
-XX:
@@ -363,7 +366,7 @@ The dependent version of `druid` needs to be upgraded to 
version `1.1.12 +`, and
 
 ---
 
-<h3 id='19'>Q: 19.NoSuchMethodError in apache-dubbo 2.7.0?</h3>
+<h3 id='19'>Q: 19.NoSuchMethodError in apache-dubbo 2.7.0?</h3>
 
 **A:**
 
@@ -464,7 +467,7 @@ seata:
 Examples:
 
 @GlobalTransactional(timeout=60000)
-public void A()\{
+public void A ()\{
 
  call remoting B();//Remote call B service
  local DB operation;
@@ -598,7 +601,7 @@ In addition, you can also directly configure the retry 
logic separately on `@Glo
 
 ---
 
-<h3 id='37'>Q:37. Why does the java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer 
error occur when the client's JDK version is 1.8 when compiling and running? 
</h3>
+<h3 id='37'>Q: 37. Why does the java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer 
error occur when the client's JDK version is 1.8 when compiling and running? 
</h3>
 
 **A:**
 
@@ -611,7 +614,7 @@ Solution:
 
 ---
 
-<h3 id='38'>Q:38. Why when using Apple M1 chip maven dependence, unable to 
download the dependence `com.google.protobuf:protoc:exe:3.3.0`? </h3>
+<h3 id='38'>Q: 38. Why when using Apple M1 chip maven dependence, unable to 
download the dependence `com.google.protobuf:protoc:exe:3.3.0`? </h3>
 
 **A:**
 
@@ -623,7 +626,7 @@ This dependence to fixed version: `com. Google. Protobuf: 
protoc: 3.3.0: exe: os
 
 ---
 
-<h3 id='39'>Q:39. Versions 1.4.2 and below throw "Cannot construct instance of 
'java.time.LocalDateTime'" when rolling back </h3>
+<h3 id='39'>Q: 39. Versions 1.4.2 and below throw "Cannot construct instance 
of 'java.time.LocalDateTime'" when rolling back </h3>
 
 **A:**
 
@@ -684,7 +687,7 @@ Refer to this 
[pr](https://github.com/apache/incubator-seata/pull/3738), can cov
 
 **A:**
 
-- When using the DB storage mode, it is necessary to pay attention to using 
the corresponding version of the table creation script of the seata-server. The 
address obtained by the table creation script is: 
https://github.com/apache/incubator-seata/tree/${version}/script/server/db,such 
as:Obtain the table creation script corresponding to seata-server 1.5.0,Can get 
upgrade seata 
https://github.com/apache/incubator-seata/tree/1.5.0/script/server/db server 
before ever address need to change  [...]
+- When using the DB storage mode, it is necessary to pay attention to using 
the corresponding version of the table creation script of the seata-server. The 
address obtained by the table creation script is: 
https://github.com/apache/incubator-seata/tree/${version}/script/server/db, 
such as: Obtain the table creation script corresponding to seata-server 1.5.0, 
Can get upgrade seata 
https://github.com/apache/incubator-seata/tree/1.5.0/script/server/db server 
before ever address need to chan [...]
 - Do not enable read-write separation for the backend DB that seata-server 
relies on. After enabling read-write separation, the latency varies depending 
on the synchronization mode, seata-server As a stateless computing node, all 
states need to be verified in the DB storage. In the case of a large 
master-slave synchronization delay, it will lead to inaccurate read states, 
thereby causing transaction logic processing problems. For higher read and 
write performance, the DB can set the isol [...]
 
 ---
@@ -763,4 +766,10 @@ public class SetSeataInterceptor implements 
RequestInterceptor {
 2. Why use JDK25?
    - In order to support the Spring AI dependencies introduced in the 
subsequent versions of namingserver and console, the versions of Spring Boot 
and JDK must be upgraded. Choosing JDK 25 as the target version not only meets 
the technical requirements of Spring AI, but also lays the foundation for the 
development of new functions and the adaptation of brand-new functions in the 
future, ensuring the forward-looking and scalability of the technology stack.
 
----
\ No newline at end of file
+---
+
+<h3 id='46'>Q: 46. Why does Seata report LockWaitTimeoutException due to table 
name case sensitivity in global transaction lock reentrancy? </h3>
+
+- Remove useOldAliasMetadataBehavior=true from your MySQL JDBC URL or set it 
to false.
+
+---
diff --git 
a/i18n/en/docusaurus-plugin-content-docs/version-v2.6/overview/faq.md 
b/i18n/en/docusaurus-plugin-content-docs/version-v2.6/overview/faq.md
index abed7b62121..970399ea4dc 100644
--- a/i18n/en/docusaurus-plugin-content-docs/version-v2.6/overview/faq.md
+++ b/i18n/en/docusaurus-plugin-content-docs/version-v2.6/overview/faq.md
@@ -105,10 +105,46 @@ Error: Could not create the Java Virtual Machine.
 Error: A fatal exception has occurred. Program will exit.?</a>
 <br/>
 
-<a href="#33" target="_self">33. Why does the 
java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer error occur when the client's 
JDK version is 1.8 when compiling and running ? </a>
+<a href="#33" target="_self">33. What is the scope of SQL support for Seata? 
</a>
 <br/>
 
-<a href="#34" target="_self">34. Why does the error "pk contains illegal 
character!" occur? </a>
+<a href="#34" target="_self">34. What are the JDK version requirements for 
Seata? </a>
+<br/>
+
+<a href="#35" target="_self">35. When the length of Oracle's NUMBER exceeds 
19, entities use Long mapping, which results in the inability to obtain row 
information, causing undo_log to be unable to be inserted and also unable to be 
rolled back? </a>
+<br/>
+
+<a href="#36" target="_self">36. How to deal with the 
io.seata.rm.datasource.exec.LockConflictException: get global lock fail ? </a>
+<br/>
+
+<a href="#37" target="_self">37. Why does the 
java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer error occur when the client's 
JDK version is 1.8 when compiling and running ? </a>
+<br/>
+
+<a href="#38" target="_self">38. Why when using Apple M1 chip maven 
dependence, unable to download the dependence 
`com.google.protobuf:protoc:exe:3.3.0`? </a>
+<br/>
+
+<a href="#39" target="_self">39. Versions 1.4.2 and below throw "Cannot 
construct instance of 'java.time.LocalDateTime'" when rolling back </a>
+<br/>
+
+<a href="#40" target="_self">40. What are the precautions when Seata-Server 
uses DB as the storage mode? </a>
+<br/>
+
+<a href="#41" target="_self">41. Did Oracle fail to roll back using the 
timestamp field type? </a>
+<br/>
+
+<a href="#42" target="_self">42. Did the transaction not roll back after an 
exception was thrown? </a>
+<br/>
+
+<a href="#43" target="_self">43. How to deal with the @FeignClient annotation 
url not working and the error prompt "Load balancer does not have available 
server for client"? </a>
+<br/>
+
+<a href="#44" target="_self">44. Why does the error "pk contains illegal 
character!" occur? </a>
+<br/>
+
+<a href="#45" target="_self">45. Why do namingserver and console require JDK 
25 for packaging and compiling? & Why are namingserver and console not involved 
in the compilation and packaging process? </a>
+<br/>
+
+<a href="#46" target="_self">46. Why does Seata report 
LockWaitTimeoutException due to table name case sensitivity in global 
transaction lock reentrancy? </a>
 <br/>
 
 ---
@@ -147,7 +183,7 @@ Since seata phase 1 local transactions have been committed, 
enhanced isolation i
 1. Dirty read Select statement with for update, proxy method with 
@GlobalLock+@Transactional or @GlobalTransaction
 2. Dirty write You must use @GlobalTransactional
 
-   note:If the interface of the business you are querying does not use the 
@GlobalTransactional annotation, which means there is no need for distributed 
transactions on the method, you can annotate the @globallock+@Transactional 
annotation on the method and add a for update statement to the query.
+   note: If the interface of the business you are querying does not use the 
@GlobalTransactional annotation, which means there is no need for distributed 
transactions on the method, you can annotate the @globallock+@Transactional 
annotation on the method and add a for update statement to the query.
    If your query interface has the @GlobalTransactional annotation on the 
outer edge of the transactional link, you can simply add a for update statement 
to your query. The reason for designing this annotation is that before it is 
available, distributed transactions need to query the committed data, but the 
business does not need distributed transactions.
    Using the @GlobalTransactional annotation adds some unnecessary additional 
RPC overhead such as begin returning xid, commit transaction, etc. GlobalLock 
simplifies the RPC process for higher performance.
 
@@ -160,7 +196,7 @@ Since seata phase 1 local transactions have been committed, 
enhanced isolation i
 1. The dirty data needs to be processed manually, and the data can be 
corrected according to the log prompt, or the corresponding undo can be deleted 
(the FailureHandler can be customized for email notification or other purposes).
 2. This option is not recommended when "undo" mirror validation is turned off 
during rollback.
 
-   node:It is recommended to isolate the dirty data in advance
+   node: It is recommended to isolate the dirty data in advance
 
 ---
 
@@ -204,7 +240,7 @@ abnormal:io.seata.common.exception.FrameworkException: can 
not register RM,err
    Error: A fatal exception has occurred. Program will exit.
 ```
 
- If the environment is sh, replace the last paragraph in the script:
+If the environment is sh, replace the last paragraph in the script:
 
 ```shell
         exec "$JAVACMD" $JAVA_OPTS -server -Xmx2048m -Xms2048m -Xmn1024m 
-Xss512k -XX:SurvivorRatio=10 -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m 
-XX:
@@ -330,7 +366,7 @@ The dependent version of `druid` needs to be upgraded to 
version `1.1.12 +`, and
 
 ---
 
-<h3 id='19'>Q: 19.NoSuchMethodError in apache-dubbo 2.7.0?</h3>
+<h3 id='19'>Q: 19.NoSuchMethodError in apache-dubbo 2.7.0?</h3>
 
 **A:**
 
@@ -431,10 +467,10 @@ seata:
 Examples:
 
 @GlobalTransactional(timeout=60000)
-public void A()\{
+public void A ()\{
 
- call remoting B();//Remote call B service
- local DB operation;
+call remoting B();//Remote call B service
+local DB operation;
 
 }
 
@@ -512,7 +548,60 @@ There are two solutions. Choose one of them:
 
 ---
 
-<h3 id='33'>Q:33. Why does the java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer 
error occur when the client's JDK version is 1.8 when compiling and running? 
</h3>
+<h3 id='33'>Q: 33. What is the scope of SQL support for Seata?</h3>
+
+**A:**
+
+Please refer to Appendix ->[SQL 
Reference](/docs/user/sqlreference/sql-restrictions/)
+
+---
+
+<h3 id='34'>Q: 34.What are the JDK version requirements for Seata? </h3>
+
+**A:**
+
+Currently, the JDK versions supported by Seata are JDK8 and 11. The remaining 
versions are not guaranteed to be 100% compatible
+
+---
+
+<h3 id='35'>Q: 35. When the length of Oracle's NUMBER exceeds 19, entities use 
Long mapping, which results in the inability to obtain row information, causing 
undo_log to be unable to be inserted and also unable to be rolled back? </h3>
+
+**A:**
+
+When the length of the NUMBER in Oracle exceeds 19, if Long is used, setObject 
will not be able to retrieve the data. Modifying the Long of the entity to 
BigInteger or BigDecimal can solve the problem.
+
+---
+
+<h3 id='36'>Q: 36. How to deal with the 
io.seata.rm.datasource.exec.LockConflictException: get global lock fail ? </h3>
+
+**A:**
+
+Failure to obtain a global lock is usually caused by distributed resource 
competition. Please ensure that the cycle of your resource competition is 
reasonable and that retries are properly implemented in your business. When a 
global transaction fails to acquire the lock, it should be restarted completely 
from the TM end of `@Globaltransational`.
+
+Seata provides a "Global Lock Retry" feature. In versions prior to 1.5, this 
feature was not enabled by default when combined with the @Transactional 
annotation or when manually starting local transactions. It can be enabled 
through the following configuration (there is a possibility of deadlock due to 
the global lock and local lock competing for each other when facing a 
rollback). It is recommended to upgrade directly to version 1.5 or above. Do 
not modify this configuration item directly.
+
+```properties
+# Whether to roll back when encountering a global lock conflict, the default 
is true
+client.rm.lock.retryPolicyBranchRollbackOnConflict=false
+```
+
+After enabling it, the default global lock retry logic is: the thread sleeps 
for 10ms and then compets for the global lock again, up to a maximum of 30 times
+
+```properties
+#You can modify the lock retry mechanism through these two configurations
+client.rm.lock.retryInterval=10
+client.rm.lock.retryTimes=30
+```
+In addition, you can also directly configure the retry logic separately on 
`@GlobalTransactional` or `@GlobalLock`, which has a higher priority than the 
global configuration of Seata
+
+```java
+@GlobalTransactional(lockRetryInternal = 100, lockRetryTimes = 30)  // v1.4.2
+@GlobalTransactional(lockRetryInterval = 100, lockRetryTimes = 30)  // v1.5
+```
+
+---
+
+<h3 id='37'>Q: 37. Why does the java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer 
error occur when the client's JDK version is 1.8 when compiling and running? 
</h3>
 
 **A:**
 
@@ -525,6 +614,162 @@ Solution:
 
 ---
 
-<h3 id='34'>Q: 34. Why does the error "pk contains illegal character!" 
occur?</h3>
+<h3 id='38'>Q: 38. Why when using Apple M1 chip maven dependence, unable to 
download the dependence `com.google.protobuf:protoc:exe:3.3.0`? </h3>
+
+**A:**
+
+In the `serializer/seata-serializer-protobuf/pom.xml` file, the dependent 
versions are defined by identifying the operating system variables: `com. 
Google. Protobuf: protoc: 3.3.0: exe: ${OS. Detected. Classifier}`.
+In the remote repository, there is no dependent version corresponding to 
Apple's M1 chip architecture.
+
+Solution
+This dependence to fixed version: `com. Google. Protobuf: protoc: 3.3.0: exe: 
osx - x86_64`, version can be downloaded to the remote warehouse corresponding 
dependencies.
+
+---
+
+<h3 id='39'>Q: 39. Versions 1.4.2 and below throw "Cannot construct instance 
of 'java.time.LocalDateTime'" when rolling back </h3>
+
+**A:**
+
+Upgrade to version 1.5.0 or above
+
+**B:**
+
+Do not use mysql Driver 8.0.x version
+
+**C:**
+
+Introduce Kryo-related dependencies
+
+```java
+            <dependency>
+                <groupId>com.esotericsoftware</groupId>
+                <artifactId>kryo</artifactId>
+                <version>4.0.2</version>
+            </dependency>
+            <dependency>
+                <groupId>de.javakaffee</groupId>
+                <artifactId>kryo-serializers</artifactId>
+                <version>0.42</version>
+            </dependency>
+```
+
+If the configuration center is file and the dependency is seata-all, please 
add the following configuration in the file.conf file of the application
+
+```java
+client {
+  undo {
+    logSerialization = "kryo"
+    }
+ }
+```
+
+If the configuration center is file and the dependency is 
seata-spring-boot-starter, you can convert it to yml format by yourself using 
yml
+
+```
+seata.client.undo.logSerialization=kryo
+```
+
+If it is a third-party configuration center such as nacos
+
+Please use the configuration of the related seata group, adding a dataid 
namespace: client. Undo. LogSerialization, value of kryo
+
+**D**:
+
+Modify the datetime type in the database table to timestamp
+
+**E:**
+
+Refer to this [pr](https://github.com/apache/incubator-seata/pull/3738), can 
cover or extension SPI way with class a new analytic way
+
+---
+
+<h3 id='40'>Q: 40. What are the precautions when Seata-Server uses DB as the 
storage mode? </h3>
+
+**A:**
+
+- When using the DB storage mode, it is necessary to pay attention to using 
the corresponding version of the table creation script of the seata-server. The 
address obtained by the table creation script is: 
https://github.com/apache/incubator-seata/tree/${version}/script/server/db, 
such as: Obtain the table creation script corresponding to seata-server 1.5.0, 
Can get upgrade seata 
https://github.com/apache/incubator-seata/tree/1.5.0/script/server/db server 
before ever address need to chan [...]
+- Do not enable read-write separation for the backend DB that seata-server 
relies on. After enabling read-write separation, the latency varies depending 
on the synchronization mode, seata-server As a stateless computing node, all 
states need to be verified in the DB storage. In the case of a large 
master-slave synchronization delay, it will lead to inaccurate read states, 
thereby causing transaction logic processing problems. For higher read and 
write performance, the DB can set the isol [...]
+
+---
+
+<h3 id='41'>Q: 41. Did Oracle fail to roll back using the timestamp field 
type? </h3>
+
+**A:**
+
+- [seata/seata-plugin at develop · apache/incubator-seata 
(github.com)](https://github.com/apache/incubator-seata/tree/develop/seata-plugin)
 Pull this plugin code, package it locally and import it yourself, or you can 
directly copy the code for spi extension support.
+
+---
+
+<h3 id='42'>Q: 42. Did the transaction not roll back after an exception was 
thrown? </h3>
+
+- Check if the exception has been caught and not thrown to the tm end. If rm 
has a global exception catcher,rm wraps the exception as a normal result 
response and gives it to tm, causing seata's transaction interceptor to fail to 
detect that the transaction has an exception. At this point, it will 
automatically check the code in the result within the code Return content that 
can determine if the business has an exception and throw an exception, or use 
[Seata api](/docs/user/api/) for rol [...]
+- Check whether the rm service throws an exception that causes the circuit 
breaker to be downgraded. If so, please refer to the above solution for 
handling.
+- If it is confirmed that there is no such possibility, the exception is 
explicitly thrown. Please retrieve the resolution result of xid and the 
registration status of rm from the tc end and tm and rm through the relevant 
xid. When the rm branch is registered, Register branch successfully can be 
retrieved through xid. Xid = 10.242.2.19:8094:3404997337200687005. For the log 
with branchId = xxxx, if it does not indicate that the branch is not 
registered, and it is in AT or XA mode, please  [...]
+- If the resolution result is rolled back but rm is not registered, you can 
determine whether there is a value at the rm calling end through 
Rootcontext.getXid. If there is no value, please refer to Q24.
+- How to determine if a data source is a proxy? If it is in AT mode, please 
set a breakpoint in ConnectionProxy#registry to see if it will enter. If it is 
in XA mode, set a breakpoint in ConnectionProxyXA#commit to see if it will 
enter. Remember, it is a branch that does not roll back!!
+
+---
+
+<h3 id='43'>Q: 43. How to deal with the @FeignClient annotation url not 
working and the error prompt "Load balancer does not have available server for 
client"? </h3>
+
+- This problem usually occurs when Zipkin is integrated with Seata.
+
+Solution
+
+- if you don't need to Feign link tracking, can through the Spring Cloud 
Sleuth provides the properties of the Spring. The Sleuth. Feign. Enabled = 
false to close it.
+- if need to use at the same time, in the start class to rule out @ 
SpringBootApplication(exclude = \{SeataFeignClientAutoConfiguration.class})
+
+Reconfigure the interceptor of Feign
+
+```java
+@Component
+@ConditionalOnClass({RequestInterceptor.class, GlobalTransactional.class})
+public class SetSeataInterceptor implements RequestInterceptor {
+
+    @Override
+    public void apply(RequestTemplate template) {
+
+        String currentXid = RootContext.getXID();
+        if (!StringUtils.isEmpty(currentXid)) {
+            template.header(RootContext.KEY_XID, currentXid);
+        }
+    }
+}
+```
+
+---
+
+<h3 id='44'>Q: 44. Why does the error "pk contains illegal character!" occur? 
</h3>
 
 - Check if the primary key contains a comma.
+
+---
+
+<h3 id='45'>Q: 45. Why do namingserver and console require JDK 25 for 
packaging and compiling? & Why are namingserver and console not involved in the 
compilation and packaging process? </h3>
+
+1. What changes have been made so far?
+  - Currently, the target JDK compilation version for namingserver is set to 
25, and a new profile has been added to ensure that namingserver and console 
are included in the compilation and packaging only in the JDK 25 environment.
+  - ```
+     <!-- profile: onlyBuildOnJDK25+ -->
+             <profile>
+                 <id>JDK25Plus</id>
+                 <activation>
+                     <jdk>[25,)</jdk>
+                 </activation>
+                 <modules>
+                     <module>namingserver</module>
+                     <module>console</module>
+                 </modules>
+             </profile>
+     ```
+  - If you use JDK25 or later versions, the namingserver and console modules 
will be excluded by default during compilation and packaging.
+2. Why use JDK25?
+  - In order to support the Spring AI dependencies introduced in the 
subsequent versions of namingserver and console, the versions of Spring Boot 
and JDK must be upgraded. Choosing JDK 25 as the target version not only meets 
the technical requirements of Spring AI, but also lays the foundation for the 
development of new functions and the adaptation of brand-new functions in the 
future, ensuring the forward-looking and scalability of the technology stack.
+
+---
+
+<h3 id='46'>Q: 46. Why does Seata report LockWaitTimeoutException due to table 
name case sensitivity in global transaction lock reentrancy? </h3>
+
+- Remove useOldAliasMetadataBehavior=true from your MySQL JDBC URL or set it 
to false.
+
+---
diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/current/overview/faq.md 
b/i18n/zh-cn/docusaurus-plugin-content-docs/current/overview/faq.md
index 98362409ab5..9e3b21b576a 100644
--- a/i18n/zh-cn/docusaurus-plugin-content-docs/current/overview/faq.md
+++ b/i18n/zh-cn/docusaurus-plugin-content-docs/current/overview/faq.md
@@ -18,16 +18,16 @@ description: Seata 常见问题。
 <a href="#4" target="_self">4.怎么使用 Seata 框架,来保证事务的隔离性?</a>
 <br/>
 
-<a href="#5" target="_self">5.脏数据回滚失败如何处理?</a>
+<a href="#5" target="_self">5.脏数据回滚失败如何处理?</a>
 <br/>
 
-<a href="#6" target="_self">6.为什么分支事务注册时, 全局事务状态不是 begin?</a>
+<a href="#6" target="_self">6.为什么分支事务注册时,全局事务状态不是 begin?</a>
 <br/>
 
-<a href="#7" target="_self">7.Nacos 作为 Seata 配置中心时,项目启动报错找不到服务。如何排查,如何处理?</a>
+<a href="#7" target="_self">7.Nacos 作为 Seata 配置中心时,项目启动报错找不到服务。如何排查,如何处理?</a>
 <br/>
 
-<a href="#8" target="_self">8.Eureka 做注册中心,TC 高可用时,如何在 TC 端覆盖 Eureka 属性?</a>
+<a href="#8" target="_self">8.Eureka 做注册中心,TC 高可用时,如何在 TC 端覆盖 Eureka 属性?</a>
 <br/>
 
 <a href="#9" target="_self">9.java.lang.NoSuchMethodError: 
com.fasterxml.jackson.databind.jsontype.TypeSerializer.typeId(Ljava/lang/Object;Lcom/fasterxml/jackson/core/JsonToken;)?</a>
@@ -36,13 +36,13 @@ description: Seata 常见问题。
 <a href="#10" target="_self">10.为什么 mybatis 没有返回自增 ID? </a>
 <br/>
 
-<a href="#11" target="_self">11.io.seata.codec.protobuf.generated 不存在,导致 seata 
server 启动不了? </a>
+<a href="#11" target="_self">11.io.seata.codec.protobuf.generated 不存在,导致 seata 
server 启动不了?</a>
 <br/>
 
 <a href="#12" target="_self">12.TC 如何使用 mysql/oracle等数据库driver? </a>
 <br/>
 
-<a href="#13" target="_self">13.支持多主键? </a>
+<a href="#13" target="_self">13.支持多主键?</a>
 <br/>
 
 <a href="#14" target="_self">14.使用 HikariDataSource 报错如何解决 ? </a>
@@ -54,32 +54,32 @@ description: Seata 常见问题。
 <a href="#16" target="_self">16.如何自己修改源码后打包 seata-server ? </a>
 <br/>
 
-<a href="#17" target="_self">17. Seata 支持哪些 RPC 框架 ?</a>
+<a href="#17" target="_self">17. Seata 支持哪些 RPC 框架?</a>
 <br/>
 
 <a href="#18" target="_self">18. java.lang.NoSuchMethodError: 
com.alibaba.druid.sql.ast.statement
 
.SQLSelect.getFirstQueueBlockLcom/alibaba/druid/sql/ast/statement/SQLSelectQueryBlock;</a>
 <br/>
 
-<a href="#19" target="_self">19. apache-dubbo 2.7.0 出现 NoSuchMethodError ?</a>
+<a href="#19" target="_self">19. apache-dubbo 2.7.0 出现 NoSuchMethodError?</a>
 <br/>
 
-<a href="#20" target="_self">20. 使用 AT 模式需要的注意事项有哪些 ?</a>
+<a href="#20" target="_self">20. 使用 AT 模式需要的注意事项有哪些?</a>
 <br/>
 
 <a href="#21" target="_self">21. win 系统使用同步脚本进行同步配置时为什么属性会多一个空行?</a>
 <br/>
 
-<a href="#22" target="_self">22. AT 模式和 Spring @Transactional 注解连用时需要注意什么 ?</a>
+<a href="#22" target="_self">22. AT 模式和 Spring @Transactional 注解连用时需要注意什么?</a>
 <br/>
 
-<a href="#23" target="_self">23. Spring boot 1.5.x 出现 jackson 相关 
NoClassDefFoundException ?</a>
+<a href="#23" target="_self">23. Spring boot 1.5.x 出现 jackson 相关 
NoClassDefFoundException?</a>
 <br/>
 
-<a href="#24" target="_self">24. SpringCloud/http调用 xid无法传递 ?</a>
+<a href="#24" target="_self">24. SpringCloud/http调用 xid 无法传递?</a>
 <br/>
 
-<a href="#25" target="_self">25. 使用动态数据源后的常见问题 ?</a>
+<a href="#25" target="_self">25. 使用动态数据源后的常见问题?</a>
 <br/>
 
 <a href="#26" target="_self">26. Could not found global transaction xid = %s, 
may be has finished.</a>
@@ -141,7 +141,10 @@ Error: A fatal exception has occurred. Program will 
exit.导致 seata-server 无
 <a href="#44" target="_self">44. 为什么会出现"xxx contains illegal character!"的错误? 
</a>
 <br/>
 
-<a href="#45" target="_self">45. 为什么namingserver和console打包编译需要JDK25版本?& 
为什么namingserver和console没有参与编译打包? </a>
+<a href="#45" target="_self">45. 为什么 namingserver 和 console 打包编译需要 JDK25 版本?& 
为什么 namingserver 和 console 没有参与编译打包? </a>
+<br/>
+
+<a href="#46" target="_self">46. Seata 全局事务锁重入时,为什么会因表名大小写问题报 
LockWaitTimeoutException? </a>
 <br/>
 
 ---
@@ -160,17 +163,17 @@ Error: A fatal exception has occurred. Program will 
exit.导致 seata-server 无
 
 ---
 
-<h3 id='3'>Q: 3.undo_log表log_status=1的记录是做什么用的?</h3>
+<h3 id='3'>Q: 3.undo_log 表 log_status=1 的记录是做什么用的?</h3>
 
 **A:**
 
-- 场景 : 分支事务 a 注册 TC 后,a 的本地事务提交前发生了全局事务回滚
-- 后果 : 全局事务回滚成功,a 资源被占用掉,产生了资源悬挂问题
-- 防悬挂措施: a 回滚时发现回滚 undo 还未插入,则插入一条 log_status=1 的 undo 记录,a 本地事务(业务写操作 sql 和对应 
undo 为一个本地事务)提交时会因为 undo 表唯一索引冲突而提交失败。
+- 场景:分支事务 a 注册 TC 后,a 的本地事务提交前发生了全局事务回滚
+- 后果:全局事务回滚成功,a 资源被占用掉,产生了资源悬挂问题
+- 防悬挂措施:a 回滚时发现回滚 undo 还未插入,则插入一条 log_status=1 的 undo 记录,a 本地事务(业务写操作 sql 和对应 
undo 为一个本地事务)提交时会因为 undo 表唯一索引冲突而提交失败。
 
 ---
 
-<h3 id='4'>Q: 4.怎么使用Seata框架,来保证事务的隔离性?</h3>
+<h3 id='4'>Q: 4.怎么使用 Seata 框架,来保证事务的隔离性?</h3>
 
 **A:**
 因 seata 一阶段本地事务已提交,为防止其他事务脏读脏写需要加强隔离。
@@ -183,7 +186,7 @@ Error: A fatal exception has occurred. Program will exit.导致 
seata-server 无
 
 ---
 
-<h3 id='5'>Q: 5.脏数据回滚失败如何处理?</h3>
+<h3 id='5'>Q: 5.脏数据回滚失败如何处理?</h3>
 
 **A:**
 
@@ -198,7 +201,7 @@ Error: A fatal exception has occurred. Program will exit.导致 
seata-server 无
 
 **A:**
 
-- 异常:Could not register branch into global session xid = status = 
Rollbacked(还有 Rollbacking、AsyncCommitting 等等二阶段状态) while expecting Begin
+- 异常:Could not register branch into global session xid = status = 
Rollbacked(还有 Rollbacking、AsyncCommitting 等等二阶段状态)while expecting Begin
 - 描述:分支事务注册时,全局事务状态需是一阶段状态 begin,非 begin 不允许注册。属于 seata 
框架层面正常的处理,用户可以从自身业务层面解决。
 - 出现场景(可继续补充)
 
@@ -210,7 +213,7 @@ Error: A fatal exception has occurred. Program will exit.导致 
seata-server 无
 
 ---
 
-<h3 id='7'>Q: 7.Nacos 作为 Seata 配置中心时,项目启动报错找不到服务。如何排查,如何处理?</h3>
+<h3 id='7'>Q: 7.Nacos 作为 Seata 配置中心时,项目启动报错找不到服务。如何排查,如何处理?</h3>
 
 **A:**
 异常:io.seata.common.exception.FrameworkException: can not register RM,err:can 
not connect to services-server.
@@ -247,7 +250,7 @@ UseCMSInitiatingOccupancyOnly 
-XX:CMSInitiatingOccupancyFraction=75 -verbose:gc
 
 ---
 
-<h3 id='8'>Q: 8.Eureka做注册中心,TC高可用时,如何在TC端覆盖Eureka属性?</h3>
+<h3 id='8'>Q: 8.Eureka 做注册中心,TC 高可用时,如何在 TC 端覆盖 Eureka 属性?</h3>
 
 **A:**
 在 seata\conf 目录下新增 eureka-client.properties 文件,添加要覆盖的 Eureka 属性即可。
@@ -262,14 +265,14 @@ eureka.lease.duration=2
 
 ---
 
-<h3 id='9'>Q: 9.发生下面异常是啥原因? java.lang.NoSuchMethodError: 
com.fasterxml.jackson.databind.jsontype.TypeSerializer.typeId(Ljava/lang/Object;Lcom/fasterxml/jackson/core/JsonToken;)?</h3>
+<h3 id='9'>Q: 9.发生下面异常是啥原因?java.lang.NoSuchMethodError: 
com.fasterxml.jackson.databind.jsontype.TypeSerializer.typeId(Ljava/lang/Object;Lcom/fasterxml/jackson/core/JsonToken;)?</h3>
 
 **A:**
 undolog 序列化配置为 jackson 时,jackson 版本需要为 2.9.9+
 
 ---
 
-<h3 id='10'>Q: 10.为什么mybatis没有返回自增ID?</h3>
+<h3 id='10'>Q: 10.为什么 mybatis 没有返回自增 ID?</h3>
 
 **A:**
 方案 1.需要修改 mybatis 的配置: 在`@Options(useGeneratedKeys = true, keyProperty = 
"id")`或者在 xml 中指定 useGeneratedKeys 和 keyProperty 属性
@@ -277,7 +280,7 @@ undolog 序列化配置为 jackson 时,jackson 版本需要为 2.9.9+
 
 ---
 
-<h3 id='11'>Q: 11.io.seata.codec.protobuf.generated不存在,导致seata server启动不了?</h3>
+<h3 id='11'>Q: 11.io.seata.codec.protobuf.generated 不存在,导致 seata server 
启动不了?</h3>
 
 **A:**
 本地执行下: `./mvnw clean install -DskipTests=true` (Mac,Linux) 或 `mvnw.cmd clean 
install -DskipTests=true` (Win), [参考 
issues/2438](https://github.com/apache/incubator-seata/issues/2438),相关代码在 0.8.1 
已经移除。
@@ -286,20 +289,20 @@ undolog 序列化配置为 jackson 时,jackson 版本需要为 2.9.9+
 
 <h3 id='12'>Q: 12.TC 如何使用 mysql/oracle等数据库driver??</h3>
 
-**A:** 
-1. 修改 application.yml 的驱动配置 store.db.driver-class-name; 
-2. 
seata-server低于2.5版本在lib/jdbc中增加对应mysql驱动,大于等于2.5版本或其它数据库则直接在lib路径中添加对应数据库的driver即可
+**A:**
+1. 修改 application.yml 的驱动配置 store.db.driver-class-name;
+2. seata-server 低于 2.5 版本在 lib/jdbc 中增加对应 mysql 驱动,大于等于 2.5 版本或其它数据库则直接在 lib 
路径中添加对应数据库的 driver 即可
 
 ---
 
-<h3 id='13'>Q: 13.支持多主键?</h3>
+<h3 id='13'>Q: 13.支持多主键?</h3>
 
 **A:**
 目前支持 mysql,oracle,pgsql,mariadb,其他类型数据库建议先建一列自增 id 主键,原复合主键改为唯一键来规避下
 
 ---
 
-<h3 id='14'>Q: 14.使用HikariDataSource报错如何解决?</h3>
+<h3 id='14'>Q: 14.使用 HikariDataSource 报错如何解决?</h3>
 
 **A:**
 
@@ -312,7 +315,7 @@ undolog 序列化配置为 jackson 时,jackson 版本需要为 2.9.9+
 
 ---
 
-<h3 id='15'>Q: 15.是否可以不使用conf类型配置文件,直接将配置写入application.properties?</h3>
+<h3 id='15'>Q: 15.是否可以不使用 conf 类型配置文件,直接将配置写入 application.properties?</h3>
 
 **A:**
 目前 seata-all 是需要使用 conf 类型配置文件,后续会支持 properties 和 yml 类型文件。当前可以在项目中依赖 
seata-spring-boot-starter,然后将配置项写入到 application
@@ -320,7 +323,7 @@ undolog 序列化配置为 jackson 时,jackson 版本需要为 2.9.9+
 
 ---
 
-<h3 id='16'>Q: 16.如何自己修改源码后打包seata-server?</h3>
+<h3 id='16'>Q: 16.如何自己修改源码后打包 seata-server?</h3>
 
 **A:**
 
@@ -334,7 +337,7 @@ undolog 序列化配置为 jackson 时,jackson 版本需要为 2.9.9+
 
 ---
 
-<h3 id='17'>Q: 17.Seata 支持哪些 RPC 框架?</h3>
+<h3 id='17'>Q: 17.Seata 支持哪些 RPC 框架?</h3>
 
 **A:**
 
@@ -355,24 +358,24 @@ undolog 序列化配置为 jackson 时,jackson 版本需要为 2.9.9+
 
 ---
 
-<h3 id='19'>Q: 19. apache-dubbo 2.7.0出现NoSuchMethodError ?</h3>
+<h3 id='19'>Q: 19. apache-dubbo 2.7.0 出现 NoSuchMethodError ?</h3>
 
 **A:**
 
-由于 apache-dubbo 在加载 Filter 时,会将 alibaba-dubbo 的 filter 一并加载且 2.7.0 版本 
com.alibaba.dubbo.rpc.Invoker 中
+由于 apache-dubbo 在加载 Filter 时,会将 alibaba-dubbo 的 filter 一并加载且 2.7.0 版本 
com.alibaba.dubbo.rpc.Invoker 中
 `Result invoke(org.apache.dubbo.rpc.Invocation invocation) throws 
RpcException;`
-误使用了 org.apache.dubbo.rpc.Invocation 来入参(2.7.1 修复),导致出现
+误使用了 org.apache.dubbo.rpc.Invocation 来入参 (2.7.1 修复),导致出现
 
 ```java
 java.lang.NoSuchMethodError: 
com.alibaba.dubbo.rpc.Invoker.invoke(Lcom/alibaba/dubbo/rpc/Invocation;)Lcom/alibaba/dubbo/rpc/Result;
 ```
 
-所以请升级 dubbo 到 2.7.1 及以上,保证兼容.本身是 alibaba-dubbo 可放心使用,alibaba-dubbo 并不包含 
apache-dubbo 的包。
+所以请升级 dubbo 到 2.7.1 及以上,保证兼容。本身是 alibaba-dubbo 可放心使用,alibaba-dubbo 并不包含 
apache-dubbo 的包。
 
参考链接:[issue](https://github.com/apache/dubbo/issues/3570),[PR](https://github.com/apache/dubbo/pull/3622/files)
 
 ---
 
-<h3 id='20'>Q: 20. 使用 AT 模式需要的注意事项有哪些 ?</h3>
+<h3 id='20'>Q: 20. 使用 AT 模式需要的注意事项有哪些?</h3>
 
 **A:**
 
@@ -383,7 +386,7 @@ java.lang.NoSuchMethodError: 
com.alibaba.dubbo.rpc.Invoker.invoke(Lcom/alibaba/d
 - 依赖 seata-all 时,也可以手动使用 DatasourceProxy 来包装 DataSource。
 
 2. 配置 GlobalTransactionScanner,使用 seata-all 时需要手动配置,使用 
seata-spring-boot-starter 时无需额外处理。
-3. 业务表中必须包含单列主键,若存在复合主键,请参考问题 13 。
+3. 业务表中必须包含单列主键,若存在复合主键,请参考问题 13。
 4. 每个业务库中必须包含 undo_log 表,若与分库分表组件联用,分库不分表。
 5. 跨微服务链路的事务需要对相应 RPC 框架支持,目前 seata-all 中已经支持:Apache Dubbo、Alibaba 
Dubbo、sofa-RPC、Motan、gRpc、httpClient,对于 Spring Cloud 的支持,请大家引用 
spring-cloud-alibaba-seata。其他自研框架、异步模型、消息消费事务模型请结合 API 自行支持。
 6. 目前 AT 模式支持的数据库有:MySQL、Oracle、PostgreSQL 和 TiDB。
@@ -392,7 +395,7 @@ java.lang.NoSuchMethodError: 
com.alibaba.dubbo.rpc.Invoker.invoke(Lcom/alibaba/d
 
 ---
 
-<h3 id='21'>Q: 21. win系统使用同步脚本进行同步配置时为什么属性会多一个空行?</h3>
+<h3 id='21'>Q: 21. win 系统使用同步脚本进行同步配置时为什么属性会多一个空行?</h3>
 
 **A:**
 
@@ -403,7 +406,7 @@ java.lang.NoSuchMethodError: 
com.alibaba.dubbo.rpc.Invoker.invoke(Lcom/alibaba/d
 
 ---
 
-<h3 id='22'>Q: 22. AT 模式和 Spring @Transactional 注解连用时需要注意什么 ?</h3>
+<h3 id='22'>Q: 22. AT 模式和 Spring @Transactional 注解连用时需要注意什么?</h3>
 
 **A:**
 
@@ -411,7 +414,7 @@ java.lang.NoSuchMethodError: 
com.alibaba.dubbo.rpc.Invoker.invoke(Lcom/alibaba/d
 
 ---
 
-<h3 id='23'>Q: 23. Spring boot 1.5.x 出现 jackson 相关 NoClassDefFoundException 
?</h3>
+<h3 id='23'>Q: 23. Spring boot 1.5.x 出现 jackson 相关 
NoClassDefFoundException?</h3>
 
 **A:**
 
@@ -419,29 +422,29 @@ java.lang.NoSuchMethodError: 
com.alibaba.dubbo.rpc.Invoker.invoke(Lcom/alibaba/d
 Caused by: java.lang.NoClassDefFoundError: Could not initialize class 
com.fasterxml.jackson.databind.ObjectMapper
 ```
 
-目前发现在 Spring Boot 1.5.x 版本中原始引入的 jackson 版本过低,会导致 Seata 依赖 jackson 
的新特性找不到,Seata 要求 jackson 版本 2.9.9+,但是使用 jackson 2.9.9+ 版本会导致 Spring Boot 中使用的 
jackson API 找不到,也就是 jackson 本身的向前兼容性存在问题。因此,建议大家将 Seata 的序列化方式切换到非 jackson 
序列化方式,比如 kryo,配置项为 client.undo.logSerialization = "kryo"
+目前发现在 Spring Boot 1.5.x 版本中原始引入的 jackson 版本过低,会导致 Seata 依赖 jackson 
的新特性找不到,Seata 要求 jackson 版本 2.9.9+,但是使用 jackson 2.9.9+ 版本会导致 Spring Boot 中使用的 
jackson API 找不到,也就是 jackson 本身的向前兼容性存在问题。因此,建议大家将 Seata 的序列化方式切换到非 jackson 
序列化方式,比如 kryo,配置项为 client.undo.logSerialization = "kryo"
 
 ---
 
-<h3 id='24'>Q: 24. SpringCloud/http调用 xid无法传递 ?</h3>
+<h3 id='24'>Q: 24. SpringCloud/http调用 xid 无法传递?</h3>
 
 **A:**
 
-1.如果是springcloud应用首先确保你引入了`spring-cloud-starter-alibaba-seata`的依赖.
+1.如果是 springcloud 应用首先确保你引入了`spring-cloud-starter-alibaba-seata`的依赖。
 
-2.如果 xid 还无法被接受到,请确认你是否实现了 
WebMvcConfigurer,如果是,请将org.apache.seata.integration.http.TransactionPropagationInterceptor.把
 SeataHandlerInterceptor 加入到你的拦截链路中. 
可以参考org.apache.seata.integration.http.SeataWebMvcConfigurer的实现方式进行.
+2.如果 xid 还无法被接受到,请确认你是否实现了 WebMvcConfigurer,如果是,请将 
org.apache.seata.integration.http.TransactionPropagationInterceptor.把 
SeataHandlerInterceptor 加入到你的拦截链路中。可以参考 
org.apache.seata.integration.http.SeataWebMvcConfigurer 的实现方式进行。
 
-3.如果是非SpringCloud应用,需要http调用时可以使用org.apache.seata.integration.http.DefaultHttpExecutor#getInstance
 进行http调用,或者参考其实现,自行封装httpclient进行传递xid.
+3.如果是非 SpringCloud 应用,需要 http 调用时可以使用 
org.apache.seata.integration.http.DefaultHttpExecutor#getInstance 进行 http 
调用,或者参考其实现,自行封装 httpclient 进行传递 xid.
 
 ---
 
-<h3 id='25'>Q: 25. 使用动态数据源后的常见问题 ?</h3>
+<h3 id='25'>Q: 25. 使用动态数据源后的常见问题?</h3>
 
 **A:** 使用 dynamic-datasource-spring-boot-starter 组件后 undolog 无法删除,或使用 
AbstractRoutingDataSource 等动态数据源后无法正常回滚
 
-dynamic-datasource-spring-boot-starter 组件内部开启 seata 后会自动使用 DataSourceProxy 来包装 
DataSource,所以需要以下方式来保持兼容
+dynamic-datasource-spring-boot-starter 组件内部开启 seata 后会自动使用 DataSourceProxy 来包装 
DataSource,所以需要以下方式来保持兼容
 
-1.如果你引入的是 seata-all,请不要使用@EnableAutoDataSourceProxy 注解.
+1.如果你引入的是 seata-all,请不要使用@EnableAutoDataSourceProxy 注解。
 
 2.如果你引入的是 seata-spring-boot-starter 请关闭自动代理
 
@@ -450,7 +453,7 @@ seata:
   enable-auto-data-source-proxy: false
 ```
 
-如果是后者,保证以上两项处理后,请不要手动代码 AbstractRoutingDataSource 等动态数据源,而是将其实际使用的物理 
datasource 进行代理,具体可参考如下例子[seata-samples/DataSourceProxyConfig.java at master · 
apache/incubator-seata-samples 
(github.com)](https://github.com/apache/incubator-seata-samples/blob/master/multiple-datasource-mybatis-plus/src/main/java/io/seata/samples/mutiple/mybatisplus/config/DataSourceProxyConfig.java)
+如果是后者,保证以上两项处理后,请不要手动代码 AbstractRoutingDataSource 等动态数据源,而是将其实际使用的物理 
datasource 进行代理,具体可参考如下例子[seata-samples/DataSourceProxyConfig.java at master · 
apache/incubator-seata-samples 
(github.com)](https://github.com/apache/incubator-seata-samples/blob/master/multiple-datasource-mybatis-plus/src/main/java/io/seata/samples/mutiple/mybatisplus/config/DataSourceProxyConfig.java)
 
 ---
 
@@ -461,7 +464,7 @@ seata:
 举例说明:
 
 @GlobalTransactional(timeout=60000)
-public void A()\{
+public void A ()\{
 
  call remoting B();//远程调用 B 服务
  local DB operation;
@@ -505,7 +508,7 @@ public void B() \{
 
 ---
 
-<h3 id='29'>Q: 29. 还没到全局事务超时时间就出现了timeoutrollcking?</h3>
+<h3 id='29'>Q: 29. 还没到全局事务超时时间就出现了 timeoutrollcking?</h3>
 
 **A:**
 
@@ -513,7 +516,7 @@ public void B() \{
 
 ---
 
-<h3 id='30'>Q: 30. Seata现阶段支持的分库分表解决方案?</h3>
+<h3 id='30'>Q: 30. Seata 现阶段支持的分库分表解决方案?</h3>
 
 **A:**
 
@@ -531,7 +534,7 @@ Seata 注册中心不能注册 0.0.0.0 或 127.0.0.1 的地址,当自动注册
 
 <h3 id='32'>Q: 32.Unrecognized VM option 'CMSParallelRemarkEnabled'
 Error: Could not create the Java Virtual Machine.
-Error: A fatal exception has occurred. Program will 
exit.导致seata-server无法启动?</h3>
+Error: A fatal exception has occurred. Program will exit.导致 seata-server 
无法启动?</h3>
 **A:**
 
 这个是因为使用了高版本的 jdk 导致。高版本的 jdk 取消了 cms 处理器,转而采用了 zgc 代替他。
@@ -541,7 +544,7 @@ Error: A fatal exception has occurred. Program will 
exit.导致seata-server无
 
 ---
 
-<h3 id='33'>Q: 33.Seata的SQL支持范围?</h3>
+<h3 id='33'>Q: 33.Seata 的 SQL 支持范围?</h3>
 
 **A:**
 
@@ -549,15 +552,15 @@ Error: A fatal exception has occurred. Program will 
exit.导致seata-server无
 
 ---
 
-<h3 id='34'>Q: 34.Seata的JDK版本要求?</h3>
+<h3 id='34'>Q: 34.Seata 的 JDK 版本要求?</h3>
 
 **A:**
 
-目前 Seata 支持的 JDK 版本为 JDK8、11。其余版本不确保 100%兼容
+目前 Seata 支持的 JDK 版本为 JDK8、11。其余版本不确保 100% 兼容
 
 ---
 
-<h3 id='35'>Q: 
35.Oracle的NUMBER长度超过19之后,实体使用Long映射,导致获取不到行信息,导致undo_log无法插入,也无法回滚?</h3>
+<h3 id='35'>Q: 35.Oracle 的 NUMBER 长度超过 19 之后,实体使用 Long 映射,导致获取不到行信息,导致 
undo_log 无法插入,也无法回滚?</h3>
 
 **A:**
 
@@ -571,17 +574,17 @@ Oracle 的 NUMBER 长度超过 19 之后,用 Long 的话,setObject 会查不
 
 
获取全局锁失败,一般是出现分布式资源竞争导致,请保证你竞争资源的周期是合理的,并且在业务上做好重试。当一个全局事务因为获取锁失败的时候,应该重新完整地从`@Globaltransational`的
 TM 端重新发起。
 
-Seata 提供了一个“全局锁重试”功能,1.5 之前的版本中默认在结合@Transactional 
注解或手动开启本地事务下未开启该功能,可以通过下面这个配置来开启(面临回滚时可能全局锁和本地锁互相争抢导致死锁的可能)。建议直接升级 1.5 
及以上版本,不要直接改动这个配置项.
+Seata 提供了一个“全局锁重试”功能,1.5 之前的版本中默认在结合@Transactional 
注解或手动开启本地事务下未开启该功能,可以通过下面这个配置来开启 (面临回滚时可能全局锁和本地锁互相争抢导致死锁的可能)。建议直接升级 1.5 
及以上版本,不要直接改动这个配置项。
 
 ```properties
-#遇到全局锁冲突时是否回滚,默认为true
+#遇到全局锁冲突时是否回滚,默认为 true
 client.rm.lock.retryPolicyBranchRollbackOnConflict=false
 ```
 
 开启后,默认的全局锁重试逻辑是:线程 sleep 10ms,再次争全局锁,最多 30 次
 
 ```properties
-#你可通过这2个配置来修改锁重试机制
+#你可通过这 2 个配置来修改锁重试机制
 client.rm.lock.retryInterval=10
 client.rm.lock.retryTimes=30
 ```
@@ -608,7 +611,7 @@ client.rm.lock.retryTimes=30
 
 ---
 
-<h3 id='38'>Q:38. 
为什么在使用Apple的M1芯片下载maven依赖时,无法下载依赖`com.google.protobuf:protoc:exe:3.3.0` ?</h3>
+<h3 id='38'>Q:38. 为什么在使用 Apple 的 M1 芯片下载 maven 
依赖时,无法下载依赖`com.google.protobuf:protoc:exe:3.3.0` ?</h3>
 
 **A:**
 
@@ -620,7 +623,7 @@ client.rm.lock.retryTimes=30
 
 ---
 
-<h3 id='39'>Q:39. 1.4.2及以下版本回滚时抛出Cannot construct instance of 
`java.time.LocalDateTime` ?</h3>
+<h3 id='39'>Q:39. 1.4.2 及以下版本回滚时抛出 Cannot construct instance of 
`java.time.LocalDateTime` ?</h3>
 
 **A:**
 
@@ -647,7 +650,7 @@ client.rm.lock.retryTimes=30
             </dependency>
 ```
 
-如果配置中心是 file,依赖是 seata-all,请在应用的 file.conf 文件中添加如下配置
+如果配置中心是 file,依赖是 seata-all,请在应用的 file.conf 文件中添加如下配置
 
 ```java
 client {
@@ -657,7 +660,7 @@ client {
  }
 ```
 
-如果配置中心是 file,依赖是 seata-spring-boot-starter,使用 yml 自行转成 yml 格式即可
+如果配置中心是 file,依赖是 seata-spring-boot-starter,使用 yml 自行转成 yml 格式即可
 
 ```
 seata.client.undo.logSerialization=kryo
@@ -681,31 +684,31 @@ seata.client.undo.logSerialization=kryo
 
 **A:**
 
-- 使用 DB 存储模式时,需要注意使用相应 seata-server 
对应版本的建表脚本,建表脚本获取地址:https://github.com/apache/incubator-seata/tree/${版本}/script/server/db,例如:获取seata-server
 1.5.0 对应的建表脚本,可从此地址获取 
https://github.com/apache/incubator-seata/tree/1.5.0/script/server/db 升级 
seata-server 前需要先变更表结构。
+- 使用 DB 存储模式时,需要注意使用相应 seata-server 
对应版本的建表脚本,建表脚本获取地址:https://github.com/apache/incubator-seata/tree/${版本}/script/server/db,例如:获取
 seata-server 1.5.0 对应的建表脚本,可从此地址获取 
https://github.com/apache/incubator-seata/tree/1.5.0/script/server/db 升级 
seata-server 前需要先变更表结构。
 - seata-server 依赖的后端的 DB,不要开启读写分离。开启读写分离后根据同步模式的不同延迟也有所不同,seata-server
   为无状态计算节点,所有状态都需要到 DB 存储中校验,在主从同步延迟较大的情况下会导致读取的状态不准确从而导致事务逻辑处理问题。为了更高的读写性能,DB 
可将隔离级别设置为读已提交。
 
 ---
 
-<h3 id='41'>Q: 41. Oracle使用timestamp字段类型回滚失败?</h3>
+<h3 id='41'>Q: 41. Oracle 使用 timestamp 字段类型回滚失败?</h3>
 
 **A:**
 
-- [seata/seata-plugin at develop · apache/incubator-seata 
(github.com)](https://github.com/apache/incubator-seata/tree/develop/seata-plugin)
 拉取此 plugin 代码,本地打包自行引入,也可直接拷贝代码进行 spi 扩展支持
+- [seata/seata-plugin at develop · apache/incubator-seata 
(github.com)](https://github.com/apache/incubator-seata/tree/develop/seata-plugin)
 拉取此 plugin 代码,本地打包自行引入,也可直接拷贝代码进行 spi 扩展支持
 
 ---
 
 <h3 id='42'>Q: 42. 抛出异常后事务未回滚?</h3>
 
-- 检查异常是否被捕获,没有抛至 tm 端,如 rm 存在全局异常捕获器,rm 将异常包装成了一个正常的 result 响应给了 tm,导致 seata 
的事务拦截器无法发现事务出现了异常,此时自行在代码中根据 result 中的 code 之类可判断业务出现异常的返回内容进行抛出异常,或者使用[Seata 
api](/docs/user/api/) 进行回滚,切记 api 回滚必须结束调用,假设 tm 调用了 rm1 就出现错误,进行了 api 
回滚,那么不应该让这个调用链再走到 rm2 去,应该直接 return 结束方法调用
-- 检查是否 rm 服务抛出异常导致进行了熔断降级处理,如果是请参考方案上述方案进行处理
-- 如确认无上述可能,异常明确抛出,请通过相关的 xid 到 tc 端和 tm 和 rm 检索 xid 的决议结果和 rm 注册情况,当 rm 
分支注册时,通过 xid 可以检索到 Register branch successfully, xid = 
10.242.2.19:8094:3404997337200687005 , branchId = xxxx 的日志,如果没有说明分支没有注册,如是 AT 或 
XA 模式请检查数据源代理或 xid 传递问题,如分支已注册,那么检查决议结果,如事务提交,tm 
端会有类似[10.242.2.19:8094:3404997337200687005] commit status: Committed 
的日志,如果是回滚那么相关关键字为 rollback status: Rollbacked 等,如果抛出异常决议缺是 commit,那么 
99%的情况为异常被吞,请仔细检查第一点和第二点的情况,切记不要把日志打印堆栈认为是抛出了异常堆栈!!!!
-- 如决议结果是回滚,但是 rm 没注册,可在 rm 调用端通过 Rootcontext.getXid 来判断是否有值,如果无值请参考 Q24
-- 如何判断数据源是否代理,如果是 AT 模式请在 ConnectionProxy#registry 打上断点,看是否会进入,XA 模式 
ConnectionProxyXA#commit 打断点看是否会进入,切记是不回滚的分支!!!
+- 检查异常是否被捕获,没有抛至 tm 端,如 rm 存在全局异常捕获器,rm 将异常包装成了一个正常的 result 响应给了 tm,导致 seata 
的事务拦截器无法发现事务出现了异常,此时自行在代码中根据 result 中的 code 之类可判断业务出现异常的返回内容进行抛出异常,或者使用[Seata 
api](/docs/user/api/) 进行回滚,切记 api 回滚必须结束调用,假设 tm 调用了 rm1 就出现错误,进行了 api 
回滚,那么不应该让这个调用链再走到 rm2 去,应该直接 return 结束方法调用
+- 检查是否 rm 服务抛出异常导致进行了熔断降级处理,如果是请参考方案上述方案进行处理
+- 如确认无上述可能,异常明确抛出,请通过相关的 xid 到 tc 端和 tm 和 rm 检索 xid 的决议结果和 rm 注册情况,当 rm 
分支注册时,通过 xid 可以检索到 Register branch successfully, xid = 
10.242.2.19:8094:3404997337200687005 , branchId = xxxx 的日志,如果没有说明分支没有注册,如是 AT 或 
XA 模式请检查数据源代理或 xid 传递问题,如分支已注册,那么检查决议结果,如事务提交,tm 
端会有类似[10.242.2.19:8094:3404997337200687005] commit status: Committed 
的日志,如果是回滚那么相关关键字为 rollback status: Rollbacked 等,如果抛出异常决议缺是 commit,那么 
99%的情况为异常被吞,请仔细检查第一点和第二点的情况,切记不要把日志打印堆栈认为是抛出了异常堆栈!!!!
+- 如决议结果是回滚,但是 rm 没注册,可在 rm 调用端通过 Rootcontext.getXid 来判断是否有值,如果无值请参考 Q24
+- 如何判断数据源是否代理,如果是 AT 模式请在 ConnectionProxy#registry 打上断点,看是否会进入,XA 模式 
ConnectionProxyXA#commit 打断点看是否会进入,切记是不回滚的分支!!!
 
 ---
 
-<h3 id='43'>Q: 43. 怎么处理@FeignClient注解url不起效,提示 Load balancer does not have 
available server for client的问题?</h3>
+<h3 id='43'>Q: 43. 怎么处理@FeignClient 注解 url 不起效,提示 Load balancer does not have 
available server for client 的问题?</h3>
 
 - 通常 Zipkin 与 Seata 整合的时候会出现该问题。
 
@@ -740,10 +743,10 @@ public class SetSeataInterceptor implements 
RequestInterceptor {
 
 ---
 
-<h3 id='45'>Q: 45. 为什么namingserver和console打包编译需要JDK25版本?& 
为什么namingserver和console没有参与编译打包? </h3>
+<h3 id='45'>Q: 45. 为什么 namingserver 和 console 打包编译需要 JDK25 版本?& 为什么 
namingserver 和 console 没有参与编译打包? </h3>
 
 1. 目前做了什么变更?
-   - 
目前namingserver的目标JDK编译版本被设置为25,并且新增了profile来保证在JDK25环境下才会将namingserver和console加入进编译和打包
+   - 目前 namingserver 的目标 JDK 编译版本被设置为 25,并且新增了 profile 来保证在 JDK25 环境下才会将 
namingserver 和 console 加入进编译和打包
    - ```
      <!-- profile: onlyBuildOnJDK25+ -->
              <profile>
@@ -757,8 +760,13 @@ public class SetSeataInterceptor implements 
RequestInterceptor {
                  </modules>
              </profile>
      ```
-   - 若使用JDK25以下的版本,编译打包会默认将namingserver和console模块排除。
-2. 为什么要使用JDK25?
+   - 若使用 JDK25 以下的版本,编译打包会默认将 namingserver 和 console 模块排除。
+2. 为什么要使用 JDK25?
    - 为了支持 namingserver 和 console 后续版本引入的 Spring AI 依赖,必须将 Spring Boot 和 JDK 
版本升级。选择 JDK 25 作为目标版本,不仅满足 Spring AI 的技术要求,也为未来新功能的开发和全新功能的适配奠定基础,确保技术栈的前瞻性和扩展性。
 
 ---
+
+<h3 id='46'>Q: 46. Seata 全局事务锁重入时,为什么会因表名大小写问题报 LockWaitTimeoutException?</h3>
+- 从 MySQL JDBC 连接 URL 中移除`useOldAliasMetadataBehavior=true`参数,或将其设置为`false`。
+
+---
diff --git 
a/i18n/zh-cn/docusaurus-plugin-content-docs/version-v2.6/overview/faq.md 
b/i18n/zh-cn/docusaurus-plugin-content-docs/version-v2.6/overview/faq.md
index 25cb9cd0b19..c6f75b7cb53 100644
--- a/i18n/zh-cn/docusaurus-plugin-content-docs/version-v2.6/overview/faq.md
+++ b/i18n/zh-cn/docusaurus-plugin-content-docs/version-v2.6/overview/faq.md
@@ -18,16 +18,16 @@ description: Seata 常见问题。
 <a href="#4" target="_self">4.怎么使用 Seata 框架,来保证事务的隔离性?</a>
 <br/>
 
-<a href="#5" target="_self">5.脏数据回滚失败如何处理?</a>
+<a href="#5" target="_self">5.脏数据回滚失败如何处理?</a>
 <br/>
 
-<a href="#6" target="_self">6.为什么分支事务注册时, 全局事务状态不是 begin?</a>
+<a href="#6" target="_self">6.为什么分支事务注册时,全局事务状态不是 begin?</a>
 <br/>
 
-<a href="#7" target="_self">7.Nacos 作为 Seata 配置中心时,项目启动报错找不到服务。如何排查,如何处理?</a>
+<a href="#7" target="_self">7.Nacos 作为 Seata 配置中心时,项目启动报错找不到服务。如何排查,如何处理?</a>
 <br/>
 
-<a href="#8" target="_self">8.Eureka 做注册中心,TC 高可用时,如何在 TC 端覆盖 Eureka 属性?</a>
+<a href="#8" target="_self">8.Eureka 做注册中心,TC 高可用时,如何在 TC 端覆盖 Eureka 属性?</a>
 <br/>
 
 <a href="#9" target="_self">9.java.lang.NoSuchMethodError: 
com.fasterxml.jackson.databind.jsontype.TypeSerializer.typeId(Ljava/lang/Object;Lcom/fasterxml/jackson/core/JsonToken;)?</a>
@@ -36,13 +36,13 @@ description: Seata 常见问题。
 <a href="#10" target="_self">10.为什么 mybatis 没有返回自增 ID? </a>
 <br/>
 
-<a href="#11" target="_self">11.io.seata.codec.protobuf.generated 不存在,导致 seata 
server 启动不了? </a>
+<a href="#11" target="_self">11.io.seata.codec.protobuf.generated 不存在,导致 seata 
server 启动不了?</a>
 <br/>
 
 <a href="#12" target="_self">12.TC 如何使用 mysql/oracle等数据库driver? </a>
 <br/>
 
-<a href="#13" target="_self">13.支持多主键? </a>
+<a href="#13" target="_self">13.支持多主键?</a>
 <br/>
 
 <a href="#14" target="_self">14.使用 HikariDataSource 报错如何解决 ? </a>
@@ -54,32 +54,32 @@ description: Seata 常见问题。
 <a href="#16" target="_self">16.如何自己修改源码后打包 seata-server ? </a>
 <br/>
 
-<a href="#17" target="_self">17. Seata 支持哪些 RPC 框架 ?</a>
+<a href="#17" target="_self">17. Seata 支持哪些 RPC 框架?</a>
 <br/>
 
 <a href="#18" target="_self">18. java.lang.NoSuchMethodError: 
com.alibaba.druid.sql.ast.statement
 
.SQLSelect.getFirstQueueBlockLcom/alibaba/druid/sql/ast/statement/SQLSelectQueryBlock;</a>
 <br/>
 
-<a href="#19" target="_self">19. apache-dubbo 2.7.0 出现 NoSuchMethodError ?</a>
+<a href="#19" target="_self">19. apache-dubbo 2.7.0 出现 NoSuchMethodError?</a>
 <br/>
 
-<a href="#20" target="_self">20. 使用 AT 模式需要的注意事项有哪些 ?</a>
+<a href="#20" target="_self">20. 使用 AT 模式需要的注意事项有哪些?</a>
 <br/>
 
 <a href="#21" target="_self">21. win 系统使用同步脚本进行同步配置时为什么属性会多一个空行?</a>
 <br/>
 
-<a href="#22" target="_self">22. AT 模式和 Spring @Transactional 注解连用时需要注意什么 ?</a>
+<a href="#22" target="_self">22. AT 模式和 Spring @Transactional 注解连用时需要注意什么?</a>
 <br/>
 
-<a href="#23" target="_self">23. Spring boot 1.5.x 出现 jackson 相关 
NoClassDefFoundException ?</a>
+<a href="#23" target="_self">23. Spring boot 1.5.x 出现 jackson 相关 
NoClassDefFoundException?</a>
 <br/>
 
-<a href="#24" target="_self">24. SpringCloud/http调用 xid无法传递 ?</a>
+<a href="#24" target="_self">24. SpringCloud/http调用 xid 无法传递?</a>
 <br/>
 
-<a href="#25" target="_self">25. 使用动态数据源后的常见问题 ?</a>
+<a href="#25" target="_self">25. 使用动态数据源后的常见问题?</a>
 <br/>
 
 <a href="#26" target="_self">26. Could not found global transaction xid = %s, 
may be has finished.</a>
@@ -141,6 +141,12 @@ Error: A fatal exception has occurred. Program will 
exit.导致 seata-server 无
 <a href="#44" target="_self">44. 为什么会出现"xxx contains illegal character!"的错误? 
</a>
 <br/>
 
+<a href="#45" target="_self">45. 为什么 namingserver 和 console 打包编译需要 JDK25 版本?& 
为什么 namingserver 和 console 没有参与编译打包? </a>
+<br/>
+
+<a href="#46" target="_self">46. Seata 全局事务锁重入时,为什么会因表名大小写问题报 
LockWaitTimeoutException? </a>
+<br/>
+
 ---
 
 <h3 id='1'>Q: 1.Seata 目前可以用于生产环境吗?</h3>
@@ -157,30 +163,30 @@ Error: A fatal exception has occurred. Program will 
exit.导致 seata-server 无
 
 ---
 
-<h3 id='3'>Q: 3.undo_log表log_status=1的记录是做什么用的?</h3>
+<h3 id='3'>Q: 3.undo_log 表 log_status=1 的记录是做什么用的?</h3>
 
 **A:**
 
-- 场景 : 分支事务 a 注册 TC 后,a 的本地事务提交前发生了全局事务回滚
-- 后果 : 全局事务回滚成功,a 资源被占用掉,产生了资源悬挂问题
-- 防悬挂措施: a 回滚时发现回滚 undo 还未插入,则插入一条 log_status=1 的 undo 记录,a 本地事务(业务写操作 sql 和对应 
undo 为一个本地事务)提交时会因为 undo 表唯一索引冲突而提交失败。
+- 场景:分支事务 a 注册 TC 后,a 的本地事务提交前发生了全局事务回滚
+- 后果:全局事务回滚成功,a 资源被占用掉,产生了资源悬挂问题
+- 防悬挂措施:a 回滚时发现回滚 undo 还未插入,则插入一条 log_status=1 的 undo 记录,a 本地事务(业务写操作 sql 和对应 
undo 为一个本地事务)提交时会因为 undo 表唯一索引冲突而提交失败。
 
 ---
 
-<h3 id='4'>Q: 4.怎么使用Seata框架,来保证事务的隔离性?</h3>
+<h3 id='4'>Q: 4.怎么使用 Seata 框架,来保证事务的隔离性?</h3>
 
 **A:**
 因 seata 一阶段本地事务已提交,为防止其他事务脏读脏写需要加强隔离。
 
 1. 脏读 select 语句加 for update,代理方法增加@GlobalLock+@Transactional 
或@GlobalTransactional
 2. 脏写 必须使用@GlobalTransactional
-    注:如果你查询的业务的接口没有@GlobalTransactional 
包裹,也就是这个方法上压根没有分布式事务的需求,这时你可以在方法上标注@GlobalLock+@Transactional 注解,并且在查询语句上加 for 
update。
+   注:如果你查询的业务的接口没有@GlobalTransactional 
包裹,也就是这个方法上压根没有分布式事务的需求,这时你可以在方法上标注@GlobalLock+@Transactional 注解,并且在查询语句上加 for 
update。
    如果你查询的接口在事务链路上外层有@GlobalTransactional 注解,那么你查询的语句只要加 for update 
就行。设计这个注解的原因是在没有这个注解之前,需要查询分布式事务读已提交的数据,但业务本身不需要分布式事务。
    若使用@GlobalTransactional 注解就会增加一些没用的额外的 rpc 开销比如 begin 返回 
xid,提交事务等。GlobalLock 简化了 rpc 过程,使其做到更高的性能。
 
 ---
 
-<h3 id='5'>Q: 5.脏数据回滚失败如何处理?</h3>
+<h3 id='5'>Q: 5.脏数据回滚失败如何处理?</h3>
 
 **A:**
 
@@ -195,7 +201,7 @@ Error: A fatal exception has occurred. Program will exit.导致 
seata-server 无
 
 **A:**
 
-- 异常:Could not register branch into global session xid = status = 
Rollbacked(还有 Rollbacking、AsyncCommitting 等等二阶段状态) while expecting Begin
+- 异常:Could not register branch into global session xid = status = 
Rollbacked(还有 Rollbacking、AsyncCommitting 等等二阶段状态)while expecting Begin
 - 描述:分支事务注册时,全局事务状态需是一阶段状态 begin,非 begin 不允许注册。属于 seata 
框架层面正常的处理,用户可以从自身业务层面解决。
 - 出现场景(可继续补充)
 
@@ -207,7 +213,7 @@ Error: A fatal exception has occurred. Program will exit.导致 
seata-server 无
 
 ---
 
-<h3 id='7'>Q: 7.Nacos 作为 Seata 配置中心时,项目启动报错找不到服务。如何排查,如何处理?</h3>
+<h3 id='7'>Q: 7.Nacos 作为 Seata 配置中心时,项目启动报错找不到服务。如何排查,如何处理?</h3>
 
 **A:**
 异常:io.seata.common.exception.FrameworkException: can not register RM,err:can 
not connect to services-server.
@@ -244,11 +250,11 @@ UseCMSInitiatingOccupancyOnly 
-XX:CMSInitiatingOccupancyFraction=75 -verbose:gc
 
 ---
 
-<h3 id='8'>Q: 8.Eureka做注册中心,TC高可用时,如何在TC端覆盖Eureka属性?</h3>
+<h3 id='8'>Q: 8.Eureka 做注册中心,TC 高可用时,如何在 TC 端覆盖 Eureka 属性?</h3>
 
 **A:**
 在 seata\conf 目录下新增 eureka-client.properties 文件,添加要覆盖的 Eureka 属性即可。
- 例如,要覆盖 eureka.instance.lease-renewal-interval-in-seconds 和 
eureka.instance.lease-expiration-duration-in-seconds,添加如下内容:
+例如,要覆盖 eureka.instance.lease-renewal-interval-in-seconds 和 
eureka.instance.lease-expiration-duration-in-seconds,添加如下内容:
 
 ```
 eureka.lease.renewalInterval=1
@@ -259,14 +265,14 @@ eureka.lease.duration=2
 
 ---
 
-<h3 id='9'>Q: 9.发生下面异常是啥原因? java.lang.NoSuchMethodError: 
com.fasterxml.jackson.databind.jsontype.TypeSerializer.typeId(Ljava/lang/Object;Lcom/fasterxml/jackson/core/JsonToken;)?</h3>
+<h3 id='9'>Q: 9.发生下面异常是啥原因?java.lang.NoSuchMethodError: 
com.fasterxml.jackson.databind.jsontype.TypeSerializer.typeId(Ljava/lang/Object;Lcom/fasterxml/jackson/core/JsonToken;)?</h3>
 
 **A:**
 undolog 序列化配置为 jackson 时,jackson 版本需要为 2.9.9+
 
 ---
 
-<h3 id='10'>Q: 10.为什么mybatis没有返回自增ID?</h3>
+<h3 id='10'>Q: 10.为什么 mybatis 没有返回自增 ID?</h3>
 
 **A:**
 方案 1.需要修改 mybatis 的配置: 在`@Options(useGeneratedKeys = true, keyProperty = 
"id")`或者在 xml 中指定 useGeneratedKeys 和 keyProperty 属性
@@ -274,7 +280,7 @@ undolog 序列化配置为 jackson 时,jackson 版本需要为 2.9.9+
 
 ---
 
-<h3 id='11'>Q: 11.io.seata.codec.protobuf.generated不存在,导致seata server启动不了?</h3>
+<h3 id='11'>Q: 11.io.seata.codec.protobuf.generated 不存在,导致 seata server 
启动不了?</h3>
 
 **A:**
 本地执行下: `./mvnw clean install -DskipTests=true` (Mac,Linux) 或 `mvnw.cmd clean 
install -DskipTests=true` (Win), [参考 
issues/2438](https://github.com/apache/incubator-seata/issues/2438),相关代码在 0.8.1 
已经移除。
@@ -283,20 +289,20 @@ undolog 序列化配置为 jackson 时,jackson 版本需要为 2.9.9+
 
 <h3 id='12'>Q: 12.TC 如何使用 mysql/oracle等数据库driver??</h3>
 
-**A:** 
-1. 修改 application.yml 的驱动配置 store.db.driver-class-name; 
-2. 
seata-server低于2.5版本在lib/jdbc中增加对应mysql驱动,大于等于2.5版本或其它数据库则直接在lib路径中添加对应数据库的driver即可
+**A:**
+1. 修改 application.yml 的驱动配置 store.db.driver-class-name;
+2. seata-server 低于 2.5 版本在 lib/jdbc 中增加对应 mysql 驱动,大于等于 2.5 版本或其它数据库则直接在 lib 
路径中添加对应数据库的 driver 即可
 
 ---
 
-<h3 id='13'>Q: 13.支持多主键?</h3>
+<h3 id='13'>Q: 13.支持多主键?</h3>
 
 **A:**
 目前支持 mysql,oracle,pgsql,mariadb,其他类型数据库建议先建一列自增 id 主键,原复合主键改为唯一键来规避下
 
 ---
 
-<h3 id='14'>Q: 14.使用HikariDataSource报错如何解决?</h3>
+<h3 id='14'>Q: 14.使用 HikariDataSource 报错如何解决?</h3>
 
 **A:**
 
@@ -309,7 +315,7 @@ undolog 序列化配置为 jackson 时,jackson 版本需要为 2.9.9+
 
 ---
 
-<h3 id='15'>Q: 15.是否可以不使用conf类型配置文件,直接将配置写入application.properties?</h3>
+<h3 id='15'>Q: 15.是否可以不使用 conf 类型配置文件,直接将配置写入 application.properties?</h3>
 
 **A:**
 目前 seata-all 是需要使用 conf 类型配置文件,后续会支持 properties 和 yml 类型文件。当前可以在项目中依赖 
seata-spring-boot-starter,然后将配置项写入到 application
@@ -317,7 +323,7 @@ undolog 序列化配置为 jackson 时,jackson 版本需要为 2.9.9+
 
 ---
 
-<h3 id='16'>Q: 16.如何自己修改源码后打包seata-server?</h3>
+<h3 id='16'>Q: 16.如何自己修改源码后打包 seata-server?</h3>
 
 **A:**
 
@@ -331,7 +337,7 @@ undolog 序列化配置为 jackson 时,jackson 版本需要为 2.9.9+
 
 ---
 
-<h3 id='17'>Q: 17.Seata 支持哪些 RPC 框架?</h3>
+<h3 id='17'>Q: 17.Seata 支持哪些 RPC 框架?</h3>
 
 **A:**
 
@@ -352,24 +358,24 @@ undolog 序列化配置为 jackson 时,jackson 版本需要为 2.9.9+
 
 ---
 
-<h3 id='19'>Q: 19. apache-dubbo 2.7.0出现NoSuchMethodError ?</h3>
+<h3 id='19'>Q: 19. apache-dubbo 2.7.0 出现 NoSuchMethodError ?</h3>
 
 **A:**
 
-由于 apache-dubbo 在加载 Filter 时,会将 alibaba-dubbo 的 filter 一并加载且 2.7.0 版本 
com.alibaba.dubbo.rpc.Invoker 中
+由于 apache-dubbo 在加载 Filter 时,会将 alibaba-dubbo 的 filter 一并加载且 2.7.0 版本 
com.alibaba.dubbo.rpc.Invoker 中
 `Result invoke(org.apache.dubbo.rpc.Invocation invocation) throws 
RpcException;`
-误使用了 org.apache.dubbo.rpc.Invocation 来入参(2.7.1 修复),导致出现
+误使用了 org.apache.dubbo.rpc.Invocation 来入参 (2.7.1 修复),导致出现
 
 ```java
 java.lang.NoSuchMethodError: 
com.alibaba.dubbo.rpc.Invoker.invoke(Lcom/alibaba/dubbo/rpc/Invocation;)Lcom/alibaba/dubbo/rpc/Result;
 ```
 
-所以请升级 dubbo 到 2.7.1 及以上,保证兼容.本身是 alibaba-dubbo 可放心使用,alibaba-dubbo 并不包含 
apache-dubbo 的包。
+所以请升级 dubbo 到 2.7.1 及以上,保证兼容。本身是 alibaba-dubbo 可放心使用,alibaba-dubbo 并不包含 
apache-dubbo 的包。
 
参考链接:[issue](https://github.com/apache/dubbo/issues/3570),[PR](https://github.com/apache/dubbo/pull/3622/files)
 
 ---
 
-<h3 id='20'>Q: 20. 使用 AT 模式需要的注意事项有哪些 ?</h3>
+<h3 id='20'>Q: 20. 使用 AT 模式需要的注意事项有哪些?</h3>
 
 **A:**
 
@@ -380,7 +386,7 @@ java.lang.NoSuchMethodError: 
com.alibaba.dubbo.rpc.Invoker.invoke(Lcom/alibaba/d
 - 依赖 seata-all 时,也可以手动使用 DatasourceProxy 来包装 DataSource。
 
 2. 配置 GlobalTransactionScanner,使用 seata-all 时需要手动配置,使用 
seata-spring-boot-starter 时无需额外处理。
-3. 业务表中必须包含单列主键,若存在复合主键,请参考问题 13 。
+3. 业务表中必须包含单列主键,若存在复合主键,请参考问题 13。
 4. 每个业务库中必须包含 undo_log 表,若与分库分表组件联用,分库不分表。
 5. 跨微服务链路的事务需要对相应 RPC 框架支持,目前 seata-all 中已经支持:Apache Dubbo、Alibaba 
Dubbo、sofa-RPC、Motan、gRpc、httpClient,对于 Spring Cloud 的支持,请大家引用 
spring-cloud-alibaba-seata。其他自研框架、异步模型、消息消费事务模型请结合 API 自行支持。
 6. 目前 AT 模式支持的数据库有:MySQL、Oracle、PostgreSQL 和 TiDB。
@@ -389,7 +395,7 @@ java.lang.NoSuchMethodError: 
com.alibaba.dubbo.rpc.Invoker.invoke(Lcom/alibaba/d
 
 ---
 
-<h3 id='21'>Q: 21. win系统使用同步脚本进行同步配置时为什么属性会多一个空行?</h3>
+<h3 id='21'>Q: 21. win 系统使用同步脚本进行同步配置时为什么属性会多一个空行?</h3>
 
 **A:**
 
@@ -400,7 +406,7 @@ java.lang.NoSuchMethodError: 
com.alibaba.dubbo.rpc.Invoker.invoke(Lcom/alibaba/d
 
 ---
 
-<h3 id='22'>Q: 22. AT 模式和 Spring @Transactional 注解连用时需要注意什么 ?</h3>
+<h3 id='22'>Q: 22. AT 模式和 Spring @Transactional 注解连用时需要注意什么?</h3>
 
 **A:**
 
@@ -408,7 +414,7 @@ java.lang.NoSuchMethodError: 
com.alibaba.dubbo.rpc.Invoker.invoke(Lcom/alibaba/d
 
 ---
 
-<h3 id='23'>Q: 23. Spring boot 1.5.x 出现 jackson 相关 NoClassDefFoundException 
?</h3>
+<h3 id='23'>Q: 23. Spring boot 1.5.x 出现 jackson 相关 
NoClassDefFoundException?</h3>
 
 **A:**
 
@@ -416,29 +422,29 @@ java.lang.NoSuchMethodError: 
com.alibaba.dubbo.rpc.Invoker.invoke(Lcom/alibaba/d
 Caused by: java.lang.NoClassDefFoundError: Could not initialize class 
com.fasterxml.jackson.databind.ObjectMapper
 ```
 
-目前发现在 Spring Boot 1.5.x 版本中原始引入的 jackson 版本过低,会导致 Seata 依赖 jackson 
的新特性找不到,Seata 要求 jackson 版本 2.9.9+,但是使用 jackson 2.9.9+ 版本会导致 Spring Boot 中使用的 
jackson API 找不到,也就是 jackson 本身的向前兼容性存在问题。因此,建议大家将 Seata 的序列化方式切换到非 jackson 
序列化方式,比如 kryo,配置项为 client.undo.logSerialization = "kryo"
+目前发现在 Spring Boot 1.5.x 版本中原始引入的 jackson 版本过低,会导致 Seata 依赖 jackson 
的新特性找不到,Seata 要求 jackson 版本 2.9.9+,但是使用 jackson 2.9.9+ 版本会导致 Spring Boot 中使用的 
jackson API 找不到,也就是 jackson 本身的向前兼容性存在问题。因此,建议大家将 Seata 的序列化方式切换到非 jackson 
序列化方式,比如 kryo,配置项为 client.undo.logSerialization = "kryo"
 
 ---
 
-<h3 id='24'>Q: 24. SpringCloud/http调用 xid无法传递 ?</h3>
+<h3 id='24'>Q: 24. SpringCloud/http调用 xid 无法传递?</h3>
 
 **A:**
 
-1.如果是springcloud应用首先确保你引入了`spring-cloud-starter-alibaba-seata`的依赖.
+1.如果是 springcloud 应用首先确保你引入了`spring-cloud-starter-alibaba-seata`的依赖。
 
-2.如果 xid 还无法被接受到,请确认你是否实现了 
WebMvcConfigurer,如果是,请将org.apache.seata.integration.http.TransactionPropagationInterceptor.把
 SeataHandlerInterceptor 加入到你的拦截链路中. 
可以参考org.apache.seata.integration.http.SeataWebMvcConfigurer的实现方式进行.
+2.如果 xid 还无法被接受到,请确认你是否实现了 WebMvcConfigurer,如果是,请将 
org.apache.seata.integration.http.TransactionPropagationInterceptor.把 
SeataHandlerInterceptor 加入到你的拦截链路中。可以参考 
org.apache.seata.integration.http.SeataWebMvcConfigurer 的实现方式进行。
 
-3.如果是非SpringCloud应用,需要http调用时可以使用org.apache.seata.integration.http.DefaultHttpExecutor#getInstance
 进行http调用,或者参考其实现,自行封装httpclient进行传递xid.
+3.如果是非 SpringCloud 应用,需要 http 调用时可以使用 
org.apache.seata.integration.http.DefaultHttpExecutor#getInstance 进行 http 
调用,或者参考其实现,自行封装 httpclient 进行传递 xid.
 
 ---
 
-<h3 id='25'>Q: 25. 使用动态数据源后的常见问题 ?</h3>
+<h3 id='25'>Q: 25. 使用动态数据源后的常见问题?</h3>
 
 **A:** 使用 dynamic-datasource-spring-boot-starter 组件后 undolog 无法删除,或使用 
AbstractRoutingDataSource 等动态数据源后无法正常回滚
 
-dynamic-datasource-spring-boot-starter 组件内部开启 seata 后会自动使用 DataSourceProxy 来包装 
DataSource,所以需要以下方式来保持兼容
+dynamic-datasource-spring-boot-starter 组件内部开启 seata 后会自动使用 DataSourceProxy 来包装 
DataSource,所以需要以下方式来保持兼容
 
-1.如果你引入的是 seata-all,请不要使用@EnableAutoDataSourceProxy 注解.
+1.如果你引入的是 seata-all,请不要使用@EnableAutoDataSourceProxy 注解。
 
 2.如果你引入的是 seata-spring-boot-starter 请关闭自动代理
 
@@ -447,7 +453,7 @@ seata:
   enable-auto-data-source-proxy: false
 ```
 
-如果是后者,保证以上两项处理后,请不要手动代码 AbstractRoutingDataSource 等动态数据源,而是将其实际使用的物理 
datasource 进行代理,具体可参考如下例子[seata-samples/DataSourceProxyConfig.java at master · 
apache/incubator-seata-samples 
(github.com)](https://github.com/apache/incubator-seata-samples/blob/master/multiple-datasource-mybatis-plus/src/main/java/io/seata/samples/mutiple/mybatisplus/config/DataSourceProxyConfig.java)
+如果是后者,保证以上两项处理后,请不要手动代码 AbstractRoutingDataSource 等动态数据源,而是将其实际使用的物理 
datasource 进行代理,具体可参考如下例子[seata-samples/DataSourceProxyConfig.java at master · 
apache/incubator-seata-samples 
(github.com)](https://github.com/apache/incubator-seata-samples/blob/master/multiple-datasource-mybatis-plus/src/main/java/io/seata/samples/mutiple/mybatisplus/config/DataSourceProxyConfig.java)
 
 ---
 
@@ -458,10 +464,10 @@ seata:
 举例说明:
 
 @GlobalTransactional(timeout=60000)
-public void A()\{
+public void A ()\{
 
- call remoting B();//远程调用 B 服务
- local DB operation;
+call remoting B();//远程调用 B 服务
+local DB operation;
 
 }
 
@@ -502,7 +508,7 @@ public void B() \{
 
 ---
 
-<h3 id='29'>Q: 29. 还没到全局事务超时时间就出现了timeoutrollcking?</h3>
+<h3 id='29'>Q: 29. 还没到全局事务超时时间就出现了 timeoutrollcking?</h3>
 
 **A:**
 
@@ -510,7 +516,7 @@ public void B() \{
 
 ---
 
-<h3 id='30'>Q: 30. Seata现阶段支持的分库分表解决方案?</h3>
+<h3 id='30'>Q: 30. Seata 现阶段支持的分库分表解决方案?</h3>
 
 **A:**
 
@@ -528,7 +534,7 @@ Seata 注册中心不能注册 0.0.0.0 或 127.0.0.1 的地址,当自动注册
 
 <h3 id='32'>Q: 32.Unrecognized VM option 'CMSParallelRemarkEnabled'
 Error: Could not create the Java Virtual Machine.
-Error: A fatal exception has occurred. Program will 
exit.导致seata-server无法启动?</h3>
+Error: A fatal exception has occurred. Program will exit.导致 seata-server 
无法启动?</h3>
 **A:**
 
 这个是因为使用了高版本的 jdk 导致。高版本的 jdk 取消了 cms 处理器,转而采用了 zgc 代替他。
@@ -538,7 +544,7 @@ Error: A fatal exception has occurred. Program will 
exit.导致seata-server无
 
 ---
 
-<h3 id='33'>Q: 33.Seata的SQL支持范围?</h3>
+<h3 id='33'>Q: 33.Seata 的 SQL 支持范围?</h3>
 
 **A:**
 
@@ -546,15 +552,15 @@ Error: A fatal exception has occurred. Program will 
exit.导致seata-server无
 
 ---
 
-<h3 id='34'>Q: 34.Seata的JDK版本要求?</h3>
+<h3 id='34'>Q: 34.Seata 的 JDK 版本要求?</h3>
 
 **A:**
 
-目前 Seata 支持的 JDK 版本为 JDK8、11。其余版本不确保 100%兼容
+目前 Seata 支持的 JDK 版本为 JDK8、11。其余版本不确保 100% 兼容
 
 ---
 
-<h3 id='35'>Q: 
35.Oracle的NUMBER长度超过19之后,实体使用Long映射,导致获取不到行信息,导致undo_log无法插入,也无法回滚?</h3>
+<h3 id='35'>Q: 35.Oracle 的 NUMBER 长度超过 19 之后,实体使用 Long 映射,导致获取不到行信息,导致 
undo_log 无法插入,也无法回滚?</h3>
 
 **A:**
 
@@ -568,17 +574,17 @@ Oracle 的 NUMBER 长度超过 19 之后,用 Long 的话,setObject 会查不
 
 
获取全局锁失败,一般是出现分布式资源竞争导致,请保证你竞争资源的周期是合理的,并且在业务上做好重试。当一个全局事务因为获取锁失败的时候,应该重新完整地从`@Globaltransational`的
 TM 端重新发起。
 
-Seata 提供了一个“全局锁重试”功能,1.5 之前的版本中默认在结合@Transactional 
注解或手动开启本地事务下未开启该功能,可以通过下面这个配置来开启(面临回滚时可能全局锁和本地锁互相争抢导致死锁的可能)。建议直接升级 1.5 
及以上版本,不要直接改动这个配置项.
+Seata 提供了一个“全局锁重试”功能,1.5 之前的版本中默认在结合@Transactional 
注解或手动开启本地事务下未开启该功能,可以通过下面这个配置来开启 (面临回滚时可能全局锁和本地锁互相争抢导致死锁的可能)。建议直接升级 1.5 
及以上版本,不要直接改动这个配置项。
 
 ```properties
-#遇到全局锁冲突时是否回滚,默认为true
+#遇到全局锁冲突时是否回滚,默认为 true
 client.rm.lock.retryPolicyBranchRollbackOnConflict=false
 ```
 
 开启后,默认的全局锁重试逻辑是:线程 sleep 10ms,再次争全局锁,最多 30 次
 
 ```properties
-#你可通过这2个配置来修改锁重试机制
+#你可通过这 2 个配置来修改锁重试机制
 client.rm.lock.retryInterval=10
 client.rm.lock.retryTimes=30
 ```
@@ -605,7 +611,7 @@ client.rm.lock.retryTimes=30
 
 ---
 
-<h3 id='38'>Q:38. 
为什么在使用Apple的M1芯片下载maven依赖时,无法下载依赖`com.google.protobuf:protoc:exe:3.3.0` ?</h3>
+<h3 id='38'>Q:38. 为什么在使用 Apple 的 M1 芯片下载 maven 
依赖时,无法下载依赖`com.google.protobuf:protoc:exe:3.3.0` ?</h3>
 
 **A:**
 
@@ -617,7 +623,7 @@ client.rm.lock.retryTimes=30
 
 ---
 
-<h3 id='39'>Q:39. 1.4.2及以下版本回滚时抛出Cannot construct instance of 
`java.time.LocalDateTime` ?</h3>
+<h3 id='39'>Q:39. 1.4.2 及以下版本回滚时抛出 Cannot construct instance of 
`java.time.LocalDateTime` ?</h3>
 
 **A:**
 
@@ -644,7 +650,7 @@ client.rm.lock.retryTimes=30
             </dependency>
 ```
 
-如果配置中心是 file,依赖是 seata-all,请在应用的 file.conf 文件中添加如下配置
+如果配置中心是 file,依赖是 seata-all,请在应用的 file.conf 文件中添加如下配置
 
 ```java
 client {
@@ -654,7 +660,7 @@ client {
  }
 ```
 
-如果配置中心是 file,依赖是 seata-spring-boot-starter,使用 yml 自行转成 yml 格式即可
+如果配置中心是 file,依赖是 seata-spring-boot-starter,使用 yml 自行转成 yml 格式即可
 
 ```
 seata.client.undo.logSerialization=kryo
@@ -678,31 +684,31 @@ seata.client.undo.logSerialization=kryo
 
 **A:**
 
-- 使用 DB 存储模式时,需要注意使用相应 seata-server 
对应版本的建表脚本,建表脚本获取地址:https://github.com/apache/incubator-seata/tree/${版本}/script/server/db,例如:获取seata-server
 1.5.0 对应的建表脚本,可从此地址获取 
https://github.com/apache/incubator-seata/tree/1.5.0/script/server/db 升级 
seata-server 前需要先变更表结构。
+- 使用 DB 存储模式时,需要注意使用相应 seata-server 
对应版本的建表脚本,建表脚本获取地址:https://github.com/apache/incubator-seata/tree/${版本}/script/server/db,例如:获取
 seata-server 1.5.0 对应的建表脚本,可从此地址获取 
https://github.com/apache/incubator-seata/tree/1.5.0/script/server/db 升级 
seata-server 前需要先变更表结构。
 - seata-server 依赖的后端的 DB,不要开启读写分离。开启读写分离后根据同步模式的不同延迟也有所不同,seata-server
   为无状态计算节点,所有状态都需要到 DB 存储中校验,在主从同步延迟较大的情况下会导致读取的状态不准确从而导致事务逻辑处理问题。为了更高的读写性能,DB 
可将隔离级别设置为读已提交。
 
 ---
 
-<h3 id='41'>Q: 41. Oracle使用timestamp字段类型回滚失败?</h3>
+<h3 id='41'>Q: 41. Oracle 使用 timestamp 字段类型回滚失败?</h3>
 
 **A:**
 
-- [seata/seata-plugin at develop · apache/incubator-seata 
(github.com)](https://github.com/apache/incubator-seata/tree/develop/seata-plugin)
 拉取此 plugin 代码,本地打包自行引入,也可直接拷贝代码进行 spi 扩展支持
+- [seata/seata-plugin at develop · apache/incubator-seata 
(github.com)](https://github.com/apache/incubator-seata/tree/develop/seata-plugin)
 拉取此 plugin 代码,本地打包自行引入,也可直接拷贝代码进行 spi 扩展支持
 
 ---
 
 <h3 id='42'>Q: 42. 抛出异常后事务未回滚?</h3>
 
-- 检查异常是否被捕获,没有抛至 tm 端,如 rm 存在全局异常捕获器,rm 将异常包装成了一个正常的 result 响应给了 tm,导致 seata 
的事务拦截器无法发现事务出现了异常,此时自行在代码中根据 result 中的 code 之类可判断业务出现异常的返回内容进行抛出异常,或者使用[Seata 
api](/docs/user/api/) 进行回滚,切记 api 回滚必须结束调用,假设 tm 调用了 rm1 就出现错误,进行了 api 
回滚,那么不应该让这个调用链再走到 rm2 去,应该直接 return 结束方法调用
-- 检查是否 rm 服务抛出异常导致进行了熔断降级处理,如果是请参考方案上述方案进行处理
-- 如确认无上述可能,异常明确抛出,请通过相关的 xid 到 tc 端和 tm 和 rm 检索 xid 的决议结果和 rm 注册情况,当 rm 
分支注册时,通过 xid 可以检索到 Register branch successfully, xid = 
10.242.2.19:8094:3404997337200687005 , branchId = xxxx 的日志,如果没有说明分支没有注册,如是 AT 或 
XA 模式请检查数据源代理或 xid 传递问题,如分支已注册,那么检查决议结果,如事务提交,tm 
端会有类似[10.242.2.19:8094:3404997337200687005] commit status: Committed 
的日志,如果是回滚那么相关关键字为 rollback status: Rollbacked 等,如果抛出异常决议缺是 commit,那么 
99%的情况为异常被吞,请仔细检查第一点和第二点的情况,切记不要把日志打印堆栈认为是抛出了异常堆栈!!!!
-- 如决议结果是回滚,但是 rm 没注册,可在 rm 调用端通过 Rootcontext.getXid 来判断是否有值,如果无值请参考 Q24
-- 如何判断数据源是否代理,如果是 AT 模式请在 ConnectionProxy#registry 打上断点,看是否会进入,XA 模式 
ConnectionProxyXA#commit 打断点看是否会进入,切记是不回滚的分支!!!
+- 检查异常是否被捕获,没有抛至 tm 端,如 rm 存在全局异常捕获器,rm 将异常包装成了一个正常的 result 响应给了 tm,导致 seata 
的事务拦截器无法发现事务出现了异常,此时自行在代码中根据 result 中的 code 之类可判断业务出现异常的返回内容进行抛出异常,或者使用[Seata 
api](/docs/user/api/) 进行回滚,切记 api 回滚必须结束调用,假设 tm 调用了 rm1 就出现错误,进行了 api 
回滚,那么不应该让这个调用链再走到 rm2 去,应该直接 return 结束方法调用
+- 检查是否 rm 服务抛出异常导致进行了熔断降级处理,如果是请参考方案上述方案进行处理
+- 如确认无上述可能,异常明确抛出,请通过相关的 xid 到 tc 端和 tm 和 rm 检索 xid 的决议结果和 rm 注册情况,当 rm 
分支注册时,通过 xid 可以检索到 Register branch successfully, xid = 
10.242.2.19:8094:3404997337200687005 , branchId = xxxx 的日志,如果没有说明分支没有注册,如是 AT 或 
XA 模式请检查数据源代理或 xid 传递问题,如分支已注册,那么检查决议结果,如事务提交,tm 
端会有类似[10.242.2.19:8094:3404997337200687005] commit status: Committed 
的日志,如果是回滚那么相关关键字为 rollback status: Rollbacked 等,如果抛出异常决议缺是 commit,那么 
99%的情况为异常被吞,请仔细检查第一点和第二点的情况,切记不要把日志打印堆栈认为是抛出了异常堆栈!!!!
+- 如决议结果是回滚,但是 rm 没注册,可在 rm 调用端通过 Rootcontext.getXid 来判断是否有值,如果无值请参考 Q24
+- 如何判断数据源是否代理,如果是 AT 模式请在 ConnectionProxy#registry 打上断点,看是否会进入,XA 模式 
ConnectionProxyXA#commit 打断点看是否会进入,切记是不回滚的分支!!!
 
 ---
 
-<h3 id='43'>Q: 43. 怎么处理@FeignClient注解url不起效,提示 Load balancer does not have 
available server for client的问题?</h3>
+<h3 id='43'>Q: 43. 怎么处理@FeignClient 注解 url 不起效,提示 Load balancer does not have 
available server for client 的问题?</h3>
 
 - 通常 Zipkin 与 Seata 整合的时候会出现该问题。
 
@@ -736,3 +742,31 @@ public class SetSeataInterceptor implements 
RequestInterceptor {
 - 检查主键中是否包含逗号。
 
 ---
+
+<h3 id='45'>Q: 45. 为什么 namingserver 和 console 打包编译需要 JDK25 版本?& 为什么 
namingserver 和 console 没有参与编译打包? </h3>
+
+1. 目前做了什么变更?
+  - 目前 namingserver 的目标 JDK 编译版本被设置为 25,并且新增了 profile 来保证在 JDK25 环境下才会将 
namingserver 和 console 加入进编译和打包
+  - ```
+     <!-- profile: onlyBuildOnJDK25+ -->
+             <profile>
+                 <id>JDK25Plus</id>
+                 <activation>
+                     <jdk>[25,)</jdk>
+                 </activation>
+                 <modules>
+                     <module>namingserver</module>
+                     <module>console</module>
+                 </modules>
+             </profile>
+     ```
+  - 若使用 JDK25 以下的版本,编译打包会默认将 namingserver 和 console 模块排除。
+2. 为什么要使用 JDK25?
+  - 为了支持 namingserver 和 console 后续版本引入的 Spring AI 依赖,必须将 Spring Boot 和 JDK 
版本升级。选择 JDK 25 作为目标版本,不仅满足 Spring AI 的技术要求,也为未来新功能的开发和全新功能的适配奠定基础,确保技术栈的前瞻性和扩展性。
+
+---
+
+<h3 id='46'>Q: 46. Seata 全局事务锁重入时,为什么会因表名大小写问题报 LockWaitTimeoutException?</h3>
+- 从 MySQL JDBC 连接 URL 中移除`useOldAliasMetadataBehavior=true`参数,或将其设置为`false`。
+
+---


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to