carlyin0801 opened a new issue #13423:
URL: https://github.com/apache/shardingsphere/issues/13423


   **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-17bd8ac584be4d228c9ad2d15e9d169117bd8ac584be4d228c9ad2d15e9d169117bd8ac584be4d228c9ad2d15e9d1691,
 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.tencent.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
       }
   
   


-- 
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