小编thi*_*ass的帖子

使用mysql Prepared Statement执行多个分号分隔查询

我试图在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 sql execute

11
推荐指数
1
解决办法
1万
查看次数

Mysql连接在grails应用程序中超时,在ELB上使用mariadb galera集群

我刚刚迁移了我的数据库以支持使用从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)

任何人都可以确定错误是什么,并提供一个可能的解决方案

grails datasource mariadb amazon-elb galera

5
推荐指数
1
解决办法
516
查看次数

标签 统计

amazon-elb ×1

datasource ×1

execute ×1

galera ×1

grails ×1

mariadb ×1

mysql ×1

sql ×1