【问题标题】:Using MySQL functions with Node mysql2 library将 MySQL 函数与 Node mysql2 库一起使用
【发布时间】:2021-04-02 15:45:25
【问题描述】:

这是我当前插入数据的请求:

let record = {
    ip : '127.0.0.1',
    ...
};
conn.query('INSERT INTO events_log SET ?', [record]);

是否可以将INET6_ATON 函数应用于 IP 而无需将其转换为普通查询?这个对象有几十个参数,我不想拆开。

IP 字段为varbinary(16) 类型。

【问题讨论】:

  • INET6_ATON(?) 应该可以正常工作。您可以将函数放在占位符周围,只是不要引用占位符,因为这使它成为一个字符串。
  • @user3783243 你的意思是let ip = 'INET6_ATON(127.0.0.1)'; 吗? ER_DATA_TOO_LONG,将 INET6_ATON 更改为 123INET6_ATON 也不会触发错误。
  • 不,我的意思是在查询中。 @ 987654326@ 虽然我可能弄错了节点如何将标识符构建为值......那是SQL文字还是伪?我认为INSERT INTO events_log (ip) values(INET6_ATON(?)) 会起作用
  • 当然,它会工作,因为它是纯 SQL,而且我有 JS 对象,我必须将它传递给 node-mysql 库

标签: node-modules node-mysql node-mysql2


【解决方案1】:

是的,有可能:

let INET6_ATON = { toSqlString: function() { return 'INET6_ATON(' + mysql.escape(ip) + ')'; } };

let record = {
    ip : INET6_ATON,
    ...
};
conn.query('INSERT INTO events_log SET ?', [record]);

【讨论】:

    猜你喜欢
    • 2014-02-13
    • 2011-08-18
    • 1970-01-01
    • 2018-12-23
    • 2021-04-18
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 2017-12-02
    相关资源
    最近更新 更多