SequelizeDatabaseError:运算符不存在:整数〜未知

我们正在尝试从mysql迁移到postgresql。我们正在使用正则表达式作为id,但是由于它与mysql兼容而无法正常工作。

用法:(resolvers.js)

Query: {
    database: (root,{id,gId},{db,user}) => {
        console.log('user is',user);
        let conditions = computeIdAndgId(id,gId);
        return db.Database.findOne({
        where: {
            [Op.and] : [{
            id: {
                [Op.notIRegexp]: '[0-9]'
            }
            },...conditions],tenant: user.tenant
        },raw: true
        });
    }
}

最终出现以下错误

SequelizeDatabaseError: operator does not exist: integer ~ unknown
at Query.formatError (/node_modules/sequelize/lib/dialects/postgres/query.js:354:16)
at query.catch.err (/node_modules/sequelize/lib/dialects/postgres/query.js:71:18)
at tryCatcher (/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/node_modules/bluebird/js/release/promise.js:547:31)
at Promise._settlePromise (/node_modules/bluebird/js/release/promise.js:604:18)
at Promise._settlePromise0 (/node_modules/bluebird/js/release/promise.js:649:10)
at Promise._settlePromises (/node_modules/bluebird/js/release/promise.js:725:18)
at _drainQueueStep (/node_modules/bluebird/js/release/async.js:93:12)
at _drainQueue (/node_modules/bluebird/js/release/async.js:86:9)
at Async._drainQueues (//node_modules/bluebird/js/release/async.js:102:5)
at Immediate.Async.drainQueues (/node_modules/bluebird/js/release/async.js:15:14)
at runCallback (timers.js:789:20)
at tryOnImmediate (timers.js:751:5)
at processImmediate [as _immediateCallback] (timers.js:722:5)

这些是通过序列ORM为不同数据库形成的sql查询:

MYSQL查询(有效):

SELECT `id`,`name`,`username`,`password`,`type` 
FROM `database` AS `database` 
WHERE (`database`.`id` REGEXP '[0-9]' AND `database`.`id` = '1') 
      AND `database`.`tenant` = 1 LIMIT 1;

POSTGRESQL查询(不起作用):

SELECT "id","name","username","password","type" 
FROM "database" AS "database" 
WHERE ("database"."id" ~ '[0-9]' AND "database"."id" = '1') 
      AND "database"."tenant" = 1 LIMIT 1;
rhrhok 回答:SequelizeDatabaseError:运算符不存在:整数〜未知

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3123545.html

大家都在问