小编Ind*_*jar的帖子

如何将ocaml编译为本机代码

我真的很感兴趣学习ocaml,它很快(他们说它可以编译成本机代码)并且它的功能.所以我试着编写像启用mysql事件调度程序一样简单的代码.

#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);;
Run Code Online (Sandbox Code Playgroud)

它在ocaml解释器上工作正常,但当我尝试将其编译为native(我使用的是ubuntu karmic)时,这些命令都没有工作

ocamlopt -o mysqleventon mysqleventon.ml unix.cmxa mysql.cmxa
ocamlopt -o mysqleventon mysqleventon.ml unix.cma mysql.cma
Run Code Online (Sandbox Code Playgroud)

我也试过了

ocamlc -c mysqleventon.ml unix.cma mysql.cma
Run Code Online (Sandbox Code Playgroud)

所有这些都产生了同样的信息

File "mysqleventon.ml", line 1, characters 0-1:
Error: Syntax error
Run Code Online (Sandbox Code Playgroud)

然后我试图删除"#load",所以代码就是这样

let db = Mysql.quick_connect
  ~user:"username"
  ~password:"userpassword"
  ~database:"databasename"();;
let sql =
    "SET GLOBAL EVENT_SCHEDULER=1;"
    in
    (Mysql.exec db sql);;
Run Code Online (Sandbox Code Playgroud)

ocamlopt结果消息

File "mysqleventon.ml", line 1, characters 9-28:
Error: …
Run Code Online (Sandbox Code Playgroud)

ocaml native compilation

10
推荐指数
1
解决办法
4542
查看次数

从mysql查询中获取当前会话/进程ID

我正在尝试为伪数组变量创建一个表.看起来像

CREATE  TABLE IF NOT EXISTS `MyArray`.`ArrayTable` (
  `ID` INT UNSIGNED NOT NULL COMMENT 'Hash value of SessionID + ArrayName' ,
  `SessionID` INT UNSIGNED NOT NULL ,
  `ArrayName` CHAR(26) NOT NULL 
          COMMENT '32 digit char - 6 digit longest process id (assumtion)' ,
  `Index` INT UNSIGNED NOT NULL ,
  `Value` TEXT NOT NULL ,
  PRIMARY KEY (`ID`, `SessionID`) )
ENGINE = MyISAM;
Run Code Online (Sandbox Code Playgroud)

这个表还没有标准化,"希望这会让它更容易理解:)

为了避免客户端之间的冲突,客户端会话之间应该有区别.出于这个原因,我认为需要知道当前的会话/进程ID(就像"SHOW PROCESSLIST"),但真的需要知道IN WHICH进程的查询是什么?

mysql

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

标签 统计

compilation ×1

mysql ×1

native ×1

ocaml ×1