当前位置: 首页 > 知识库问答 >
问题:

Sequelize:sqlite_error:near“[]”:语法错误

常光明
2023-03-14

我正在为我的数据库使用Sequelize(6.3.0)和sqlite3(4.2.0),并试图定义以下模型:

this.define("giveaways", {
            channel: {
                type: Sq.STRING,
                allowNull: false
            },
            message: {
                type: Sq.STRING,
                allowNull: false
            },
            name: {
                type: Sq.STRING,
                allowNull: false
            },
            end: {
                type: Sq.DATE,
                allowNull: false
            },
            participating: {
                type: Sq.ARRAY(Sq.STRING),
                allowNull: false,
                defaultValue: []
            },
            winnersCount: {
                type: Sq.NUMBER,
                allowNull: false
            },
            winners: {
                type: Sq.ARRAY(Sq.STRING),
                allowNull: false,
                defaultValue: []
            },
            finished: {
                type: Sq.BOOLEAN,
                allowNull: false,
                defaultValue: false
            },
            host: {
                type: Sq.STRING,
                allowNull: false
            }

        });

它应该在进程启动时定义,但我得到以下错误:

(node:22440) UnhandledPromiseRejectionWarning: SequelizeDatabaseError: SQLITE_ERROR: near "[]": syntax error

当然,每当我试图对此表执行任何操作时,都会出现以下错误:

(node:22440) UnhandledPromiseRejectionWarning: SequelizeDatabaseError: SQLITE_ERROR: no such table: giveaways

我猜问题来自使用数组数据类型的“参与”和“赢家”行。

谢谢你的帮助

共有1个答案

华修永
2023-03-14

让我引用手册:

数组()

type的数组,例如datatypes.array(datatypes.decimal)。仅在postgres中提供。

(重点是我)

因此,您不能将array数据类型用于SQLite3,只能将PostgreSQL用作后端。

您还可以查看SQLite3文档--SQLite3没有类似数组的数据类型,Sequelize可以使用它来实现array

附注:您应该检查您的代码,看看为什么您会收到未经处理的承诺拒绝。听起来好像您没有正确处理异步错误。异步调用中可能缺少.catch

 类似资料:
  • 问题内容: 我在遵循MySQL语法指南时遇到语法错误。 我的查询是: 从逻辑上讲,这应该选择,但是我得到了 问题答案: 您的查询仅在存储过程/函数上下文中有效。参见那里以供参考。

  • 问题内容: 我最近在Java PreparedStatements中遇到了此问题。我有以下代码: 方法在哪里 但是,它总是抛出此错误: 当我以幼稚的方式执行“ …”时,不会发生此问题,但我希望以此方式进行。 任何帮助深表感谢。 更新 我尝试了社区的各种建议,例如 仍然出现错误信息。 问题答案: 解决问题的方法实际上非常简单,当您要调用PreparedStatement.executeQuery()

  • 问题内容: 我目前在我的Web应用程序中使用jQuery,Twitter Bootstrap和AngularJS。我一直在尝试进行路由,但是`Syntax error, unrecognized expression: 我需要在我的AngularJS路由中使用斜杠(即,并将在我的div中加载不同的内容)。可能是什么原因导致此错误? 问题答案: 我猜在指定目标时要多加斜杠。删除它们,它应该可以正常工

  • 我最近在Java PreparedStatements中遇到了这个问题。我有以下代码: 其中方法是 但是,它一直抛出这个错误: 当我以幼稚的方式做“...

  • 目前遇到此语法错误,错误发布在代码下方。 上面的代码,无法找出if语句上的语法错误。错误消息将很快粘贴为注释

  • 问题内容: 为什么Python在第9行的简单语句中给我一个语法错误? Python的版本是: 问题答案: 在Python 3中,print是一个函数,您需要像这样调用它。