Quy trình này hoạt động từ dòng lệnh MySQL cả từ xa lẫn trên máy chủ cục bộ và nó hoạt động khi được gọi từ PHP. Trong mọi trường hợp tài trợ này đủ:Quy trình lưu trữ MySQL không thành công khi được gọi từ R
CREATE PROCEDURE `myDB`.`lee_expout` (IN e int, IN g int)
BEGIN
select lm.groupname, lee.location, starttime, dark,
inadist,smldist,lardist,emptydur,inadur,smldur,lardur,emptyct,entct,inact,smlct,larct
from lee join leegroup_map lm using (location)
where exp_id= e and std_interval!=0 and groupset_id= g
order by starttime,groupname,location;
END
Tôi đang cố gắng để gọi nó từ R:
library(DBI)
library(RMySQL)
db <- dbConnect(MySQL(), user="user", password="pswd",
dbname="myDB", host="the.host.com")
#args to pass to the procedure
exp_id<-16
group_id<-2
#the procedure call
p <- paste('CALL lee_expout(', exp_id, ',', group_id,')', sep= ' ')
#the bare query
q <- paste('select lm.groupname, lee.location, starttime, dark,
inadist,smldist,lardist,emptydur,inadur,smldur,lardur,emptyct,entct,inact,smlct,larct
from lee join leegroup_map lm using (location)
where exp_id=',
exp_id,
' and std_interval!=0 and groupset_id=',
group_id,
'order by starttime,groupname,location', sep=' ')
rs_p <- dbSendQuery(db, statement=p) #run procedure and fail
p_data<-fetch(rs_p,n=30)
rs_q <- dbSendQuery(db, statement=q) #or comment out p, run query and succeed
q_data<-fetch(rs_q,n=30)
Truy vấn trần chạy tốt. Cuộc gọi thủ tục không thành công với
RApache Cảnh báo/Lỗi !!! Lỗi trong mysqlExecStatement (conn, tuyên bố, ...): điều khiển RS-DBI: (không thể chạy tuyên bố: THỦ TỤC myDB.lee_expout không thể trở về một kết quả thiết lập trong bối cảnh nhất định)
các MySQL docs nói
Đối với báo cáo có thể được xác định chỉ trong thời gian chạy để trả lại kết quả thiết lập, một PROCEDURE% s không thể trả lại kết quả được đặt trong lỗi ngữ cảnh đã cho xảy ra.
Chúng tôi từng nghĩ rằng nếu một thủ tục được sẽ ném lỗi đó, nó sẽ được ném trong mọi hoàn cảnh thay vì chỉ từ R.
Bất kỳ suy nghĩ về làm thế nào để sửa lỗi này?
bạn có quản lý để chạy proc cửa hàng của mình không? bạn có thể đánh dấu câu trả lời đúng giúp bạn? hoặc nếu không ai trong số họ tạo bài đăng và tự trả lời.Vì vậy, những người quan tâm có thể tìm thấy một giải pháp ở đây. Cảm ơn – jangorecki
@JanGorecki: Tôi đã không quản lý để chạy các thủ tục được lưu trữ. Tôi đã phải sử dụng truy vấn trần. Đây là một thời gian trước đây mặc dù và có lẽ gói DBI của R là tốt hơn về thủ tục lưu trữ ngay bây giờ. – dnagirl
Tôi không sử dụng MySQL, nhưng tôi đã chạy truy vấn SQL trên cơ sở dữ liệu Microsoft SQL sử dụng R. Tôi nhận thấy rằng bất cứ khi nào, trong truy vấn, có bất cứ điều gì nhưng câu lệnh chọn trần, quá trình không thành công. Tôi không biết nếu nó là cần thiết trong MySQL, nhưng có bạn đã cố gắng loại bỏ các "tạo thủ tục", "bắt đầu" và "kết thúc" dòng? – thepule