tôi có tìm kiếm google nhưng không thể tìm thấy câu trả lời cho những gì tôi nghĩ là một quiestion dễ dàng.perl dbi kết nối lại trên ngắt kết nối
Tôi có mã perl (ví dụ bên dưới) nhận dữ liệu 3 giây một lần và cập nhật dữ liệu nhận được vào cơ sở dữ liệu Mysql nhưng đôi khi cơ sở dữ liệu mysql không có sẵn và tập lệnh chết. Làm thế nào tôi có thể làm cho kết nối mysql một lần nữa nếu nó không thành công?
use DBD::Mysql;
sub updateMysqlDB{
my $connect = DBI->connect("dbi:mysql:$database:$host",
$user,
$pw,
{RaiseError => 1}
);
$myquery = "My sql query to insrt data into columns";
$query_handle=$connect->prepare($myquery);
$query_handle->execute();
$connect->disconnect;
}
while (1) {
if data received call updateMysqlDB();
else wait for data { sleep 3 ;}
}
xin chào, bạn có thể vui lòng chỉ cho tôi một ví dụ đầy đủ về cách sử dụng Auto_reconnect không? Tôi vẫn còn khá mới ở perl, tôi chỉ có thể vượt qua các thuộc tính như dưới đây? $ của tôi kết nối = DBI-> connect ("dBi: mysql: $ cơ sở dữ liệu: $ host", $ user, $ pw, {RaiseError => 1, Autocommit => 1, mysql_auto_reconnect => 1} ); – Linus
Có, điều đó sẽ hoạt động. Bạn cũng có thể thiết lập bit sau khi tạo '$ connect', như' $ connect -> {mysql_auto_reconnect} = 1'. Tuy nhiên, bạn cần xem xét cảnh báo được chỉ định bởi @Ted, trước khi sử dụng tính năng này. Bạn cũng có thể xem xét 'DBIx :: Connector' tại CPAN, cho kết nối DBI nhanh và an toàn và quản lý giao dịch' – Unos
@Ted Hopp fantastic .. hoạt động tuyệt vời .. cảm ơn tất cả mọi người. – Linus