我的生产数据库有一个只读从属数据库,我正在尝试运行一个生成报告的过程。该过程创建一个临时表,插入一些记录,然后从表中选择结果。当我通过命令行界面或db UI工具(Navicat)运行该过程时,这种方法工作得很好,创建的表没有任何问题,我可以插入并接收正确的报告。
当我尝试在Java中使用jdbc调用相同的过程时,问题就开始了。当我运行这个过程时,我得到了一个异常:
Exception in thread "main" java.sql.SQLException: The MySQL server is running with the --read-only option so
我在一个文件中有sql,其中包含许多语句。如何让mysql在不执行的情况下检查sql的合法性? 就像这样 mysql --check-only input.sql 至少,我需要检查语法。 理想情况下,它还会尝试插入数据和检查约束。基本上将整个文件包装在一个隐式事务中,该事务会自动回滚。 mysql CLI可以做到这一点吗?
我有以下MYSQL查询:
START TRANSACTION;
SELECT sport_id INTO @a FROM sports WHERE sport_id = 2 FOR UPDATE;
UPDATE sports SET sport_name = 'Table Tennis' WHERE sport_id = @a;
if (@a > 1) then
COMMIT;
ELSE
ROLLBACK;
END IF;
问题是它在if语句处返回一个错误:
#1064 -您的SQL语法出现了错误;请检查与您的MySQL服务器版本对应的手册,以获得
我正在运行一个循环来收集XML文件中的数据,在完成2000+行之后,有一些验证规则随后运行。如果安全的话,我想将MySQL数据存储在前面提到的循环中,我希望将所有的MySQL查询存储到一个数组中(几乎是2000个查询),并在验证规则完成后在一个循环中运行它们。
这主意不好吗?如果是这样,那么存储查询并在以后运行的最佳方法是什么?
如果你不明白我说的是什么:
foreach($xml->object as $control) {
// Stores relative xml data here
}
if(1=1) // Validation rules run
for(...) { /
下面是我的程序。在里面找到一个循环。目标是如果任何一个单循环执行都会抛出异常,我不想停止该进程,并希望继续并commit成功执行的每个循环查询。因此,我在循环中放置了异常捕获。正如你所看到的,我在最后还有一个commit和一些begin/end块。我的问题是,我是否是正确的,还是应该在循环中(就在commit;)中添加额外的begin/end?提前谢谢你。
CREATE OR REPLACE PROCEDURE myProc()
LANGUAGE plpgsql
AS $procedure$
declare
mysql text;
tb_name text;
myTables CURSO
我们有一个经常运行的进程,并在类型为innodb的mysql数据库上执行以下步骤。
SET autocommit = 0;
DELETE FROM table WHERE category='something';
-- every 300 rows or whatever is left in case of last round
INSERT IGNORE INTO table (fields) VALUES (row1),(row2),..,(row300);
-- check affected rows == number of rows given if no
我要直截了当地说。
这是我的表
Create Table Beneficios(
IdBeneficio int unsigned primary key auto_increment not null,
Nombre varchar(150)not null,
Estado boolean default true not null,
Descripcion varchar(300)not null,
Tipo enum('Promocio','Descuento','Oferta')
);
为了存储值,我决定调用一个stored_proced
我有一个包含id和name列的表。
START TRANSACTION;
UPDATE Test SET name='test' where id=1;
SELECT ROW_COUNT() INTO @affected_rows;
IF (@affected_rows > 0) THEN
COMMIT;
ELSE
ROLLBACK;
END IF
它似乎是在返回一个错误
您的SQL语法出现错误;请检查与您的MySQL服务器版本对应的手册,以获得在第1行“IF (affected_rows > 0)然后提交”附近使用的正确语法。
目前正在运行
我正在编写一个进程,从我们的夜间数据库快照中提取一个新实例,并且我想观察它的进展,并在数据库打开后执行一些操作。当mysql第一次出现时,它会花一些时间在恢复上,我想知道它什么时候完成,最好是完成了多长时间。
Linux "service“声称mysql处于”启动/运行“状态,因此这是没有帮助的。我可以尝试连接,直到连接成功,但如果在恢复过程中出现问题,我可能会永远挂起。到目前为止,我所能做的最接近的是跟踪MySQL的error.log,然后使用regex从最后一行中提取最后一个数字,以确定恢复进度。但这似乎有点脆弱和烦躁。
是否有MySQL (或第三方)提供的任何类型的工具可以确定M
修改并改进了问题:
我的MySQL服务器出了个奇怪的问题。下面是一个例子,简化为最基本的问题:
drop procedure if exists temp_test;
create procedure temp_test()
begin
declare i int default 0;
drop temporary table if exists temp_table;
create temporary table temp_table(x int) engine = memory;
while i < 400 do
insert into temp_tabl