CheerwayRen commented on issue #13423:
URL: 
https://github.com/apache/shardingsphere/issues/13423#issuecomment-977791017


   > **The shardingsphere version is 5.0.0.beta,database is mysql.**
   > 
   > **shardingsphere does not report errors:** 2021-11-03 
10:45:38.836|biz-e3424a198605469bb31139f9767fe21b||SQLLogger.java|74|INFO||||||[XNIO-1
 task-1] Logic SQL: insert into `t_pipeline_info` (`PIPELINE_ID`, `PROJECT_ID`, 
`PIPELINE_NAME`, `PIPELINE_DESC`) values (?, ?, ?, ?) on duplicate key update 
`t_pipeline_info`.`PIPELINE_DESC` = ? 2021-11-03 
10:45:38.837|biz-e3424a198605469bb31139f9767fe21b||SQLLogger.java|74|INFO||||||[XNIO-1
 task-1] SQLStatement: MySQLInsertStatement(setAssignment=Optional.empty, 
onDuplicateKeyColumns=Optional[org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.OnDuplicateKeyColumnsSegment@7b11b60e])
 2021-11-03 
10:45:38.838|biz-e3424a198605469bb31139f9767fe21b||SQLLogger.java|74|INFO||||||[XNIO-1
 task-1] Actual SQL: ds_0 ::: insert into `t_pipeline_info` (`PIPELINE_ID`, 
`PROJECT_ID`, `PIPELINE_NAME`, `PIPELINE_DESC`) values (?, ?, ?, ?) on 
duplicate key update `t_pipeline_info`.`PIPELINE_DESC` = ? ::: 
[p-17bd8ac584be4d228c9ad2d15e9d169117bd
 8ac584be4d228c9ad2d15e9d169117bd8ac584be4d228c9ad2d15e9d1691, devops-test, 
bnmvvv1234, dfdf89089808, dfdf89089808]
   > 
   > **Native SQL directly inserts an error** 
![企业微信截图_16359070273966](https://user-images.githubusercontent.com/5268164/140003658-61fa2dc9-9484-46b7-a9f0-d060cfff0b39.png)
   > 
   > My configuration is as follows:
   > 
   > ```
   > private fun dataSourceMap(config: DataSourceProperties): Map<String, 
DataSource> {
   >     val dataSourceMap: MutableMap<String, DataSource> = mutableMapOf()
   >     val dataSourceConfigs = config.dataSourceConfigs
   >     dataSourceConfigs.forEachIndexed { index, dataSourceConfig ->
   >         val dataSourceName = "$DATA_SOURCE_NAME_PREFIX$index"
   >         dataSourceMap[dataSourceName] = createHikariDataSource(
   >             datasourcePoolName = dataSourceName,
   >             datasourceUrl = dataSourceConfig.url,
   >             datasourceUsername = dataSourceConfig.username,
   >             datasourcePassword = dataSourceConfig.password,
   >             datasourceInitSql = dataSourceConfig.initSql,
   >             datasouceLeakDetectionThreshold = 
dataSourceConfig.leakDetectionThreshold
   >         )
   >     }
   >     return dataSourceMap
   > }
   > 
   > private fun createHikariDataSource(
   >     datasourcePoolName: String,
   >     datasourceUrl: String,
   >     datasourceUsername: String,
   >     datasourcePassword: String,
   >     datasourceInitSql: String?,
   >     datasouceLeakDetectionThreshold: Long
   > ): HikariDataSource {
   >     return HikariDataSource().apply {
   >         poolName = datasourcePoolName
   >         jdbcUrl = datasourceUrl
   >         username = datasourceUsername
   >         password = datasourcePassword
   >         driverClassName = Driver::class.java.name
   >         minimumIdle = 10
   >         maximumPoolSize = 50
   >         idleTimeout = 60000
   >         connectionInitSql = datasourceInitSql
   >         leakDetectionThreshold = datasouceLeakDetectionThreshold
   >     }
   > }
   > 
   > @Bean
   > fun shardingDataSource(config: DataSourceProperties): DataSource {
   >     val shardingRuleConfig = ShardingRuleConfiguration()
   >     // 设置表的路由规则
   >     val tableRuleConfigs = shardingRuleConfig.tables
   >     val dataSourceSize = config.dataSourceConfigs.size
   >     tableRuleConfigs.add(getTableRuleConfiguration("t_pipeline_info", 
dataSourceSize))
   >     tableRuleConfigs.add(getTableRuleConfiguration("t_pipeline_user", 
dataSourceSize))
   >     val dbShardingAlgorithmrProps = Properties()
   >     dbShardingAlgorithmrProps.setProperty("strategy", "STANDARD")
   >     dbShardingAlgorithmrProps.setProperty("algorithmClassName",
   >         
"com.xxx.devops.sharding.configuration.BkDatabaseShardingAlgorithm")
   >     shardingRuleConfig.shardingAlgorithms["bkDatabaseShardingAlgorithm"] =
   >         ShardingSphereAlgorithmConfiguration("CLASS_BASED", 
dbShardingAlgorithmrProps)
   > 
   >     shardingRuleConfig.defaultTableShardingStrategy = 
NoneShardingStrategyConfiguration()
   >     shardingRuleConfig.defaultDatabaseShardingStrategy =
   >         StandardShardingStrategyConfiguration(PROJECT_ID_FIELD, 
"bkProcessDatabaseShardingAlgorithm")
   >     val properties = Properties()
   >     // 是否打印SQL解析和改写日志
   >     properties.setProperty("sql-show", "true")
   >     return ShardingSphereDataSourceFactory.createDataSource(
   >         dataSourceMap(config),
   >         listOf(shardingRuleConfig),
   >         properties
   >     )
   > }
   > 
   > fun getTableRuleConfiguration(
   >     tableName: String,
   >     dataSourceSize: Int,
   >     specifyDataSourceName: String? = null
   > ): ShardingTableRuleConfiguration? {
   >     // 生成实际节点规则
   >     val actualDataNodes = if (specifyDataSourceName != null) {
   >         "$specifyDataSourceName.$tableName"
   >     } else {
   >         val lastIndex = dataSourceSize - 1
   >         "$DATA_SOURCE_NAME_PREFIX\${0..$lastIndex}.$tableName"
   >     }
   >     val tableRuleConfig = ShardingTableRuleConfiguration(tableName, 
actualDataNodes)
   >     tableRuleConfig.tableShardingStrategy = 
NoneShardingStrategyConfiguration()
   >     tableRuleConfig.databaseShardingStrategy =
   >         StandardShardingStrategyConfiguration(PROJECT_ID_FIELD, 
"bkDatabaseShardingAlgorithm")
   >     return tableRuleConfig
   > }
   > ```
   > 
   > **My table structure is as follows:**
   > 
   > CREATE TABLE `t_pipeline_info` ( `PIPELINE_ID` varchar(34) NOT NULL 
DEFAULT, `PROJECT_ID` varchar(64) NOT NULL COMMENT, `PIPELINE_NAME` 
varchar(255) NOT NULL, `PIPELINE_DESC` varchar(255) DEFAULT NULL, PRIMARY KEY 
(`PIPELINE_ID`), UNIQUE KEY `T_PIPELINE_INFO_NAME_uindex` 
(`PROJECT_ID`,`PIPELINE_NAME`), KEY `PROJECT_ID` (`PROJECT_ID`,`PIPELINE_ID`) ) 
ENGINE=InnoDB DEFAULT CHARSET=utf8;
   
   How do you configure and display the actual SQL,I configured sql-show, but 
it didn't work
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to