Tôi thực sự quan tâm đến việc học ocaml, nó nhanh (họ nói nó có thể được biên dịch thành mã gốc) và nó hoạt động. Vì vậy, tôi đã cố gắng để mã một cái gì đó dễ dàng như cho phép lập lịch sự kiện mysql.Cách biên dịch ocaml thành mã gốc
#load "unix.cma";;
#directory "+mysql";;
#load "mysql.cma";;
let db = Mysql.quick_connect
~user:"username"
~password:"userpassword"
~database:"databasename"();;
let sql =
"SET GLOBAL EVENT_SCHEDULER=1;"
in
(Mysql.exec db sql);;
Nó hoạt động tốt trên phiên dịch ocaml, nhưng khi tôi đã cố gắng để biên dịch nó để mẹ đẻ (Tôi đang sử dụng Ubuntu Karmic), không phải của các lệnh làm việc
ocamlopt -o mysqleventon mysqleventon.ml unix.cmxa mysql.cmxa
ocamlopt -o mysqleventon mysqleventon.ml unix.cma mysql.cma
tôi cũng đã cố gắng
ocamlc -c mysqleventon.ml unix.cma mysql.cma
tất cả trong số họ kết quả tương tự nhắn
File "mysqleventon.ml", line 1, characters 0-1:
Error: Syntax error
Sau đó, tôi đã cố gắng để loại bỏ các "# tải", do đó mã đi như thế này
let db = Mysql.quick_connect
~user:"username"
~password:"userpassword"
~database:"databasename"();;
let sql =
"SET GLOBAL EVENT_SCHEDULER=1;"
in
(Mysql.exec db sql);;
Các ocamlopt kết quả nhắn
File "mysqleventon.ml", line 1, characters 9-28:
Error: Unbound value Mysql.quick_connect
Tôi hy vọng ai đó có thể cho tôi biết, đâu tôi đang làm sai rồi.
Chỉ cần một lời nhận xét: bạn không cần Printf.sprintf trong mã mà bạn thấy. –
Tôi đã sửa đổi nó từ mạng (quên địa chỉ) như là nỗ lực đầu tiên của tôi trên cơ sở dữ liệu. Tôi đã thử sugestion của bạn, và bạn là đúng, vì vậy tôi loại bỏ "Printf.sprintf" một phần từ mã. Cảm ơn bạn. –