我试图在mysql中创建一个存储过程,它在每个请求上创建一个新表,从另一个表复制内容并提取所需的数据,最后删除表.存储过程非常大,所以我不能在每次查询后执行EXECUTE,因此我尝试以分号分隔格式一起执行查询.但在最终执行时,我得到错误代码:1064.我尝试的方法是否可行,或者是否有更好的方法.
SET tableName = (SELECT CONCAT("table",(UNIX_TIMESTAMP(NOW()))));
SET @tquery =CONCAT('CREATE TABLE `',tableName,'` (select pt.* from post_table pt join on user u on pt.user_id=u.id where pt.client="client",pt.group="group");');
SET @tquery = CONCAT(@tquery,' SELECT * FROM ',tableName,';');
SET @tquery = CONCAT(@tquery,' DROP TABLE ',tableName,';');
PREPARE stmt FROM @tquery;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Run Code Online (Sandbox Code Playgroud) 我刚刚迁移了我的数据库以支持使用从mysql到mariadb的2节点集群数据库进行复制.数据库托管在不同的域上并通过ELB访问,当我将应用程序指向节点之一时,应用程序正常工作但当我使用ELB URL连接数据库时,它随机波动并经常显示followint错误
Communication Link Failure
could not execute query; nested exception is org.hibernate.exception.JDBCConnectionException: could not execute query
Run Code Online (Sandbox Code Playgroud)
这是我的数据源配置: -
dataSource {
shard = false
pooled = true
driverClassName = "com.mysql.jdbc.Driver"
dbCreate = "update" // one of 'create', 'create-drop','update'
properties {
initialSize=5
maxActive=50
minIdle=5
maxIdle=25
maxWait = 10000
maxAge = 10 * 60000
timeBetweenEvictionRunsMillis=5000
minEvictableIdleTimeMillis=60000
validationQuery="SELECT 1"
validationInterval=15000
testWhileIdle=true
testOnBorrow=true
testOnReturn=false
jdbcInterceptors = "ConnectionState"
defaultTransactionIsolation = java.sql.Connection.TRANSACTION_READ_COMMITTED
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以确定错误是什么,并提供一个可能的解决方案