code So, I decided to make a discord points bot using heroku and node.js but I keep getting this error:
error: syntax error at or near "DUPLICATE"
I tried debugging but got no results so yeah... i need help.
what im sending to the sql postgresql database with javascript stuff:
'INSERT INTO points (Roblox_name, Points) VALUES (' + name + ', ' + amount + ') ON DUPLICATE KEY UPDATE Points=VALUES(' + amount + ')'
example{
amount = 322
and
name = george
}
EDIT:
raw application log [with VALUES(' + amount + ')' changed to ' + amount]:
2018-07-26T19:32:08.576609+00:00 app[worker.1]: Ready to serve on 1 servers,
for 6 users.
2018-07-26T19:32:42.536398+00:00 app[worker.1]: /app/bot.js:56
2018-07-26T19:32:42.536422+00:00 app[worker.1]: if (err) throw
err;
2018-07-26T19:32:42.536424+00:00 app[worker.1]: ^
2018-07-26T19:32:42.536425+00:00 app[worker.1]:
2018-07-26T19:32:42.536427+00:00 app[worker.1]: error: syntax error at or
near "DUPLICATE"
2018-07-26T19:32:42.536429+00:00 app[worker.1]: at Connection.parseE
(/app/node_modules/pg/lib/connection.js:553:11)
2018-07-26T19:32:42.536431+00:00 app[worker.1]: at
Connection.parseMessage (/app/node_modules/pg/lib/connection.js:378:19)
2018-07-26T19:32:42.536432+00:00 app[worker.1]: at TLSSocket.<anonymous>
(/app/node_modules/pg/lib/connection.js:119:22)
2018-07-26T19:32:42.536434+00:00 app[worker.1]: at emitOne
(events.js:116:13)
2018-07-26T19:32:42.536435+00:00 app[worker.1]: at TLSSocket.emit
(events.js:211:7)
2018-07-26T19:32:42.536437+00:00 app[worker.1]: at addChunk
(_stream_readable.js:263:12)
2018-07-26T19:32:42.536439+00:00 app[worker.1]: at readableAddChunk
(_stream_readable.js:250:11)
2018-07-26T19:32:42.536440+00:00 app[worker.1]: at
TLSSocket.Readable.push (_stream_readable.js:208:10)
2018-07-26T19:32:42.536442+00:00 app[worker.1]: at TLSWrap.onread
(net.js:597:20)
2018-07-26T19:32:42.629819+00:00 heroku[worker.1]: Process exited with
status 1
2018-07-26T19:32:42.738809+00:00 heroku[worker.1]: State changed from up to
crashed
EDIT new error log:
2018-07-27T12:24:05.106369+00:00 app[worker.1]: { error: syntax error at or
near
"DUPLICATE"
2018-07-27T12:24:05.106409+00:00 app[worker.1]: at Connection.parseE
(/app/node_modules/pg/lib/connection.js:553:11)
2018-07-27T12:24:05.106411+00:00 app[worker.1]: at
Connection.parseMessage
(/app/node_modules/pg/lib/connection.js:378:19)
2018-07-27T12:24:05.106412+00:00 app[worker.1]: at TLSSocket.<anonymous>
(/app/node_modules/pg/lib/connection.js:119:22)
2018-07-27T12:24:05.106413+00:00 app[worker.1]: at emitOne
(events.js:116:13)
2018-07-27T12:24:05.106414+00:00 app[worker.1]: at TLSSocket.emit
(events.js:211:7)
2018-07-27T12:24:05.106415+00:00 app[worker.1]: at addChunk
(_stream_readable.js:263:12)
2018-07-27T12:24:05.106417+00:00 app[worker.1]: at readableAddChunk
(_stream_readable.js:250:11)
2018-07-27T12:24:05.106418+00:00 app[worker.1]: at
TLSSocket.Readable.push
(_stream_readable.js:208:10)
2018-07-27T12:24:05.106419+00:00 app[worker.1]: at TLSWrap.onread
(net.js:597:20)
2018-07-27T12:24:05.106420+00:00 app[worker.1]: name: 'error',
2018-07-27T12:24:05.106422+00:00 app[worker.1]: length: 98,
2018-07-27T12:24:05.106423+00:00 app[worker.1]: severity: 'ERROR',
2018-07-27T12:24:05.106424+00:00 app[worker.1]: code: '42601',
2018-07-27T12:24:05.106425+00:00 app[worker.1]: detail: undefined,
2018-07-27T12:24:05.106426+00:00 app[worker.1]: hint: undefined,
2018-07-27T12:24:05.106427+00:00 app[worker.1]: position: '72',
2018-07-27T12:24:05.106428+00:00 app[worker.1]: internalPosition:
undefined,
2018-07-27T12:24:05.106429+00:00 app[worker.1]: internalQuery: undefined,
2018-07-27T12:24:05.106430+00:00 app[worker.1]: where: undefined,
2018-07-27T12:24:05.106431+00:00 app[worker.1]: schema: undefined,
2018-07-27T12:24:05.106433+00:00 app[worker.1]: table: undefined,
2018-07-27T12:24:05.106434+00:00 app[worker.1]: column: undefined,
2018-07-27T12:24:05.106435+00:00 app[worker.1]: dataType: undefined,
2018-07-27T12:24:05.106436+00:00 app[worker.1]: constraint: undefined,
2018-07-27T12:24:05.106437+00:00 app[worker.1]: file: 'scan.l',
2018-07-27T12:24:05.106438+00:00 app[worker.1]: line: '1087',
2018-07-27T12:24:05.106439+00:00 app[worker.1]: routine: 'scanner_yyerror'
}
You don't need to re-specify values in this part of the statement Points=Values(' + amount + ')'
It can instead just be Points = amount. Perhaps you'll need to CAST or CONVERT amount to an integer value, but that should be it.
if Roblox_name and Points is string then value must be set in 'values'
"INSERT INTO points (Roblox_name, Points) VALUES ('" + name + "','" + amount + "')
ON DUPLICATE KEY UPDATE Points=VALUES('" + amount + "')"
and you should use
if(err !== null){
console.error(err);
return;
}
instead of
if (err) throw err;
Related
I want to update an object key from mongodb. But when i want to update that key, I am getting this error
MongoServerError: Nested BSON depth greater than 50 not allowed
at Connection.onMessage (C:\Users\Mahabub Saki\Desktop\my-projects\asgmt-11\server-side\node_modules\mongodb\lib\cmap\connection.js:203:30)
at MessageStream.<anonymous> (C:\Users\Mahabub Saki\Desktop\my-projects\asgmt-11\server-side\node_modules\mongodb\lib\cmap\connection.js:63:60)
at MessageStream.emit (node:events:390:28)
at processIncomingData (C:\Users\Mahabub Saki\Desktop\my-projects\asgmt-11\server-side\node_modules\mongodb\lib\cmap\message_stream.js:108:16)
at MessageStream._write (C:\Users\Mahabub Saki\Desktop\my-projects\asgmt-11\server-side\node_modules\mongodb\lib\cmap\message_stream.js:28:9)
at writeOrBuffer (node:internal/streams/writable:389:12)
at _write (node:internal/streams/writable:330:10)
at MessageStream.Writable.write (node:internal/streams/writable:334:10)
at TLSSocket.ondata (node:internal/streams/readable:754:22)
at TLSSocket.emit (node:events:390:28) {
ok: 0,
code: 8000,
codeName: 'AtlasError',
[Symbol(errorLabels)]: Set(0) {}
}
I'm getting two errors when I try adding new data to an array with mongoose. Here is my code:
return await db.fileMeta.findOneAndUpdate({
username: username,
'files.fileUID': {
$ne: data.fileUID
}
}, {
$addToSet: {
files: data
}
}).exec();
data is a JavaScript object with 25 items that amounts to 789 bytes... Nothing near 16MBs. My code worked fine until recently (last few days) then I started getting this error:
MongoError: BSONObj size: 16829075 (0x100CA93) is invalid. Size must be between 0 and 16793600(16MB) First element: $v: 1
at MessageStream.messageHandler (/home/user/projects/web-app/node_modules/mongoose/node_modules/mongodb/lib/cmap/connection.js:268:20)
at MessageStream.emit (events.js:314:20)
at processIncomingData (/home/user/projects/web-app/node_modules/mongoose/node_modules/mongodb/lib/cmap/message_stream.js:144:12)
at MessageStream._write (/home/user/projects/web-app/node_modules/mongoose/node_modules/mongodb/lib/cmap/message_stream.js:42:5)
at doWrite (_stream_writable.js:403:12)
at writeOrBuffer (_stream_writable.js:387:5)
at MessageStream.Writable.write (_stream_writable.js:318:11)
at TLSSocket.ondata (_stream_readable.js:719:22)
at TLSSocket.emit (events.js:314:20)
at addChunk (_stream_readable.js:298:12)
at readableAddChunk (_stream_readable.js:273:9)
at TLSSocket.Readable.push (_stream_readable.js:214:10)
at TLSWrap.onStreamRead (internal/stream_base_commons.js:188:23) {
ok: 0,
code: 10334,
codeName: 'BSONObjectTooLarge'
}
Then the above error stopped and I got anther instead:
MongoError: Resulting document after update is larger than 16777216
at MessageStream.messageHandler (/home/user/projects/web-app/node_modules/mongoose/node_modules/mongodb/lib/cmap/connection.js:268:20)
at MessageStream.emit (events.js:314:20)
at processIncomingData (/home/user/projects/web-app/node_modules/mongoose/node_modules/mongodb/lib/cmap/message_stream.js:144:12)
at MessageStream._write (/home/user/projects/web-app/node_modules/mongoose/node_modules/mongodb/lib/cmap/message_stream.js:42:5)
at doWrite (_stream_writable.js:403:12)
at writeOrBuffer (_stream_writable.js:387:5)
at MessageStream.Writable.write (_stream_writable.js:318:11)
at TLSSocket.ondata (_stream_readable.js:719:22)
at TLSSocket.emit (events.js:314:20)
at addChunk (_stream_readable.js:298:12)
at readableAddChunk (_stream_readable.js:273:9)
at TLSSocket.Readable.push (_stream_readable.js:214:10)
at TLSWrap.onStreamRead (internal/stream_base_commons.js:188:23) {
ok: 0,
code: 17419,
codeName: 'Location17419'
}
Using MongoDB Compass I can see this:
Note the total size of 16.2MB, this is the only thing that I can think of that is even lose to 16MBs.
I would understand that if the error was trying to say that my data object was too large, but since it is so small (789 bytes) I don't understand why I'm getting the error or how to fix it. If the error is because the entire DB is larger than 16MBs then something must be wrong because obviously DBs should scale larger than 16MBs.
How can I prevent this error?
I took #Evert's advice and flattened my DB so that each file's metadata was it's own document instead of an array within a document. And now it works fine.
const fileMetadataDocument = new db.FileMetadata(data);
const saved = await fileMetadataDocument.save();
//Works
**Error Type**
error: A hook (`orm`) failed to load!
error: Could not tear down the ORM hook. Error details: Error: Consistency violation: Attempting to tear down a datastore (`default`) which is not currently registered with this adapter. This is usually due to a race condition in userland code (e.g. attempting to tear down the same ORM instance more than once), or it could be due to a bug in this adapter. (If you get stumped, reach out at http://sailsjs.com/support.)
at Object.teardown (D:\HTML\Sails\test\node_modules\sails-mongo\lib\index.js:390:19)
at D:\HTML\Sails\test\node_modules\waterline\lib\waterline.js:758:27
at D:\HTML\Sails\test\node_modules\waterline\node_modules\async\dist\async.js:3047:20
at eachOfArrayLike (D:\HTML\Sails\test\node_modules\waterline\node_modules\async\dist\async.js:1002:13)
at eachOf (D:\HTML\Sails\test\node_modules\waterline\node_modules\async\dist\async.js:1052:9)
at Object.eachLimit (D:\HTML\Sails\test\node_modules\waterline\node_modules\async\dist\async.js:3111:7)
at Object.teardown (D:\HTML\Sails\test\node_modules\waterline\lib\waterline.js:742:11)
at Hook.teardown (D:\HTML\Sails\test\node_modules\sails-hook-orm\index.js:246:30)
at Sails.wrapper (D:\HTML\Sails\test\node_modules\#sailshq\lodash\lib\index.js:3282:19)
at Object.onceWrapper (events.js:421:28)
at Sails.emit (events.js:315:20)
at Sails.EventEmitter.emit (domain.js:482:12)
at Sails.emitter.emit (D:\HTML\Sails\test\node_modules\sails\lib\app\private\after.js:56:26)
at D:\HTML\Sails\test\node_modules\sails\lib\app\lower.js:67:11
at beforeShutdown (D:\HTML\Sails\test\node_modules\sails\lib\app\lower.js:45:12)
at Sails.lower (D:\HTML\Sails\test\node_modules\sails\lib\app\lower.js:49:3)
at Sails.wrapper [as lower] (D:\HTML\Sails\test\node_modules\#sailshq\lodash\lib\index.js:3282:19)
at whenSailsIsReady (D:\HTML\Sails\test\node_modules\sails\lib\app\lift.js:68:13)
at D:\HTML\Sails\test\node_modules\async\dist\async.js:3861:9
at D:\HTML\Sails\test\node_modules\async\dist\async.js:421:16
at iterateeCallback (D:\HTML\Sails\test\node_modules\async\dist\async.js:924:17)
at D:\HTML\Sails\test\node_modules\async\dist\async.js:906:16
error:
error: Error: Consistency violation: Unexpected error creating db connection manager:
```
MongoError: failed to connect to server [localhost:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {
name: 'MongoError'
}]
at flaverr (D:\HTML\Sails\test\node_modules\flaverr\index.js:94:15)
at Function.module.exports.parseError (D:\HTML\Sails\test\node_modules\flaverr\index.js:371:12)
at Function.handlerCbs.error (D:\HTML\Sails\test\node_modules\machine\lib\private\help-build-machine.js:665:56)
at connectCb (D:\HTML\Sails\test\node_modules\sails-mongo\lib\private\machines\create-manager.js:130:22)
at connectCallback (D:\HTML\Sails\test\node_modules\mongodb\lib\mongo_client.js:428:5)
at D:\HTML\Sails\test\node_modules\mongodb\lib\mongo_client.js:335:11
at processTicksAndRejections (internal/process/task_queues.js:79:11)
```
at Object.error (D:\HTML\Sails\test\node_modules\sails-mongo\lib\index.js:268:21)
at D:\HTML\Sails\test\node_modules\machine\lib\private\help-build-machine.js:1514:39
at proceedToFinalAfterExecLC (D:\HTML\Sails\test\node_modules\parley\lib\private\Deferred.js:1153:14)
at proceedToInterceptsAndChecks (D:\HTML\Sails\test\node_modules\parley\lib\private\Deferred.js:913:12)
at proceedToAfterExecSpinlocks (D:\HTML\Sails\test\node_modules\parley\lib\private\Deferred.js:845:10)
at D:\HTML\Sails\test\node_modules\parley\lib\private\Deferred.js:303:7
at D:\HTML\Sails\test\node_modules\machine\lib\private\help-build-machine.js:952:35
at Function.handlerCbs.error (D:\HTML\Sails\test\node_modules\machine\lib\private\help-build-machine.js:742:26)
at connectCb (D:\HTML\Sails\test\node_modules\sails-mongo\lib\private\machines\create-manager.js:130:22)
at connectCallback (D:\HTML\Sails\test\node_modules\mongodb\lib\mongo_client.js:428:5)
at D:\HTML\Sails\test\node_modules\mongodb\lib\mongo_client.js:335:11
at processTicksAndRejections (internal/process/task_queues.js:79:11)
error: Could not load Sails app.
error:
error: Tips:
error: • First, take a look at the error message above.
error: • Make sure you've installed dependencies with `npm install`.
error: • Check that this app was built for a compatible version of Sails.
error: • Have a question or need help? (http://sailsjs.com/support)
/config/datastores.js
module.exports.datastores = {
default: {
adapter: "sails-mongo",
url: "mongodb://root#localhost/datab",
},
};
config/models.js
module.exports.models = {
schema: true,
migrate: "alter",
attributes: {
createdAt: { type: "number", autoCreatedAt: true },
updatedAt: { type: "number", autoUpdatedAt: true },
id: { type: "string", columnName: "_id" },
deleted: { type: "boolean", defaultsTo: false },
},
dataEncryptionKeys: {
default: "t9AkMiCRfZeODiZKQsgGif2zsE40wKJK6Uudr51L4hU=",
},
cascadeOnDestroy: true,
};
Could you try:
module.exports.datastores = {
default: {
adapter: require("sails-mongo"),
url: "mongodb://root#localhost/datab",
},
};
I am trying to make a text to speech discord bot. I'm more of a newbie to coding so I don't exactly understand what is going on here. The code I wrote is for executing a simple command called 'lang' which will switch the TTS language.
const prefix = process.env.prefix;
const languages = require('../../data/languages.json');
module.exports = {
name: 'lang',
description: 'Change the TTS language.',
emoji: ':map:',
execute(message, options) {
let [newLang] = options.args;
const { ttsPlayer } = message.guild;
if (!newLang) {
message.reply(`to set-up the TTS language, run: **${prefix}lang <lang_code>**
To see a list of the available lang codes, run: **${prefix}langs**.
The current language is set to: **${languages[ttsPlayer.lang]}**.`);
return;
}
newLang = newLang.toString().toLowerCase();
ttsPlayer.setLang(newLang)
.then((setLang) => {
message.reply(`language has been set to **${setLang}**.`);
})
.catch((error) => {
message.reply(error);
});
}
}
The error I get is:
2020-03-04T22:04:23.278707+00:00 app[worker.1]: [31m(10:04:23 PM) - [ERROR] - TypeError: Cannot read property 'lang' of null
2020-03-04T22:04:23.278709+00:00 app[worker.1]: at Object.execute (/app/src/commands/lang.js:15:63)
2020-03-04T22:04:23.278710+00:00 app[worker.1]: at executeCommand (/app/src/common/utils.js:46:13)
2020-03-04T22:04:23.278710+00:00 app[worker.1]: at Object.handleMessage (/app/src/events/handlers/app.js:50:3)
2020-03-04T22:04:23.278711+00:00 app[worker.1]: at Client.<anonymous> (/app/index.js:33:55)
2020-03-04T22:04:23.278711+00:00 app[worker.1]: at Client.emit (events.js:323:22)
2020-03-04T22:04:23.278712+00:00 app[worker.1]: at MessageCreateAction.handle (/app/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
2020-03-04T22:04:23.278713+00:00 app[worker.1]: at Object.module.exports [as MESSAGE_CREATE] (/app/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
2020-03-04T22:04:23.278715+00:00 app[worker.1]: at WebSocketManager.handlePacket (/app/node_modules/discord.js/src/client/websocket/WebSocketManager.js:386:31)
2020-03-04T22:04:23.278715+00:00 app[worker.1]: at WebSocketShard.onPacket (/app/node_modules/discord.js/src/client/websocket/WebSocketShard.js:435:22)
2020-03-04T22:04:23.278715+00:00 app[worker.1]: at WebSocketShard.onMessage (/app/node_modules/discord.js/src/client/websocket/WebSocketShard.js:293:10)
Can someone help me out?
I suppose problem is that variable ttsPlayer is null.
Please check if such property is present at message.guild?
Normally this type of error would not be a problem but i simply cannot understand where this is happening:
Here is my setup:
router.route('/api/academyModule')
.post(function (req, res) {
req.body.academyModule.module_id = req.body.academyModule.module.id;
req.body.academyModule.module_module_type_id = req.body.academyModule.module.module_type.id;
var am = AcademyModule.build(req.body.academyModule);
am.add(req.body.academyModule.requirements, req.body.academyModule, function (success) {
res.json({id: this[null]});
},
function (err) {
res.status(err).send(err);
});
if(req.body.teams != null)
{
req.body.teams.forEach(function(y)
{
var atm = academy_team_has_academy_module.build({academy_team_id: y.id, academy_id: y.academy_id, academy_module_module_id: req.body.academyModule.module_id })
atm.add(function(success)
{
}, function(err)
{
res.status(err).send(err);
});
});
}
})
For this i have the following model:
academy_team_has_academy_module = sequelize.define('academy_team_has_academy_module', {
academy_team_id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: false
},
academy_id: DataTypes.INTEGER,
academy_module_module_id: DataTypes.INTEGER
}, {
freezeTableName: true,
instanceMethods: {
add: function (onSuccess, onError) {
academy_team_has_academy_module.build(this.dataValues)
.save().ok(onSuccess).error(onError);
}
}
});
i know for sure this happens in this model and not AcademyModule because when i remove this code it runs without any issues. So in my console i get the following print out:
Executing (default): INSERT INTO `requirements` (`id`,`value`,`requirement_type_id`) VALUES (DEFAULT,5,'2');
Executing (default): INSERT INTO `academy_team_has_academy_module` (`academy_team_id`,`academy_id`,`academy_module_module_id`) VALUES (1,3,11);
Executing (default): INSERT INTO `academy_module` (`academy_id`,`module_id`,`module_module_type_id`,`sort_number`,`requirements_id`) VALUES ('3',11,4,4,40);
And just right after i get:
/var/www/learningbankapi/src/node_modules/mysql/lib/protocol/Parser.js:82
throw err;
^
TypeError: Cannot read property '1' of null
at module.exports.Query.formatError (/var/www/learningbankapi/src/node_modules/sequelize/lib/dialects/mysql/query.js:155:23)
at Query.module.exports.Query.run [as _callback] (/var/www/learningbankapi/src/node_modules/sequelize/lib/dialects/mysql/query.js:38:23)
at Query.Sequence.end (/var/www/learningbankapi/src/node_modules/mysql/lib/protocol/sequences/Sequence.js:96:24)
at Query.ErrorPacket (/var/www/learningbankapi/src/node_modules/mysql/lib/protocol/sequences/Query.js:93:8)
at Protocol._parsePacket (/var/www/learningbankapi/src/node_modules/mysql/lib/protocol/Protocol.js:271:23)
at Parser.write (/var/www/learningbankapi/src/node_modules/mysql/lib/protocol/Parser.js:77:12)
at Protocol.write (/var/www/learningbankapi/src/node_modules/mysql/lib/protocol/Protocol.js:39:16)
at Socket.Connection.connect (/var/www/learningbankapi/src/node_modules/mysql/lib/Connection.js:82:28)
at Socket.EventEmitter.emit (events.js:95:17)
at Socket.stream.pause.paused (_stream_readable.js:746:14)
at Socket.EventEmitter.emit (events.js:92:17)
at emitReadable_ (_stream_readable.js:408:10)
at emitReadable (_stream_readable.js:404:5)
at readableAddChunk (_stream_readable.js:165:9)
at Socket.Readable.push (_stream_readable.js:127:10)
at TCP.onread (net.js:526:21)
Ive debugged the whole thing and i can't seem to find any undefined variables. What might have gone wrong here?
Your problem is a ForeignKeyContraintError. Sequelize is trying to throw a new error but get's an unexpected error.message. If your configuration is fine, this may be an bug of sequelize.
Maybe deactivating foreign contraint checks (if possible) will solve your problem.
See: https://github.com/sequelize/sequelize/blob/master/lib/dialects/mysql/query.js#L153