我正在为我的数据库使用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
我猜问题来自使用数组数据类型的“参与”和“赢家”行。
谢谢你的帮助
让我引用手册:
数组()
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是一个函数,您需要像这样调用它。