Articles of sql

我如何获得sys.extended_properties SQL在繁琐的js

我需要使用Tedius.js获取SQL Server 2008中的列的描述,但是当我运行查询时会抛出下一条消息: events.js:182 throw er; // Unhandled 'error' event Error: Unknown type: 0 这是代码: function executeStatement() { var query = `select sc.name as colum, sep.value as description from sys.tables st inner join sys.columns sc on st.object_id = sc.object_id left join sys.extended_properties sep on st.object_id = sep.major_id` request = new Request(query, function(err, rowCount) { if […]

续集有许多,属于或两者?

我想正确设置一对一或一对多的关系,事实上,如果我在我的模型定义中使用hasOne / hasMany或belongsTo中的任何一个,似乎都可以正常工作。 例如,以下关联会在其目标上创builduserId字段: User.hasMany(Email, { as: 'emails', foreignKey: 'userId', }) User.hasOne(Profile, { as: 'profile', foreignKey: 'userId', }) 但是几乎在官方文档中的任何地方,我都会看到类似于 Projects.hasMany(Tasks); Tasks.belongsTo(Projects); 即hasMany和belongsTo一起使用。 这是真的需要还是只使用其中一个就足够了? 任何进一步的解释将是非常宝贵的。 谢谢!

格式化date时间对象作为SQL的string

我试图unit testing一个新的api端点,我已经build立了查询一个SQLite实例,并返回结果。 我从JSON播种SQLite实例,这是我试图拿起的logging: { "model": "JobResponse", "data": { "id": 4, "JobId": "1", "createdAt": "2017-08-13 00:01" } }, 我通常使用sequelize,并将使用timejs对象作为timeparam,但我需要的查询是不可能在sequelize,所以我使用原始查询。 我的JS正在生成以下查询: SELECT JobId, WHERE JobId = 2 AND createdAt > 2017-08-13 AND createdAt < 2017-08-14; 我确信这是datetime元素格式化的问题,但JSON种子和SQL查询都必须是stringforms,我已经尝试了moment().format() ,但后来我得到错误,例如: SQLITE_ERROR:接近“00” 这大概是因为时刻格式里面有空格。 我应该如何格式化这些date时间参数作为string? 更新 根据评论中的讨论,我现在已经midify我的查询包含引号,例如SELECT JobId, FROM JobResponses WHERE createdAt > '2017-08-10 00:00:01' AND createdAt < '2017-08-10 23:59:00' GROUP BY […]

Node / MySQL:只能插入第一次

我有一个节点(目前v6)和MySQL的问题。 Node Code正在运行服务器端,并没有得到任何错误。 代码第一次工作; 但是,随后的时间, name和description值作为空stringinput, quantity列为0 (默认值)。 created , pid和id (自动递增)列的值插入正确。 我不知道为什么这是第一次正常工作,而不是后来工作。 编辑:当我从addMany输出的查询,并直接input到MySQL,它每次都工作。 每次我如何正确地工作? 任何帮助真诚感谢! 表格模式: CREATE TABLE `some_table` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `pid` int(11) unsigned NOT NULL, `qty` int(11) unsigned NOT NULL DEFAULT '0', `name` varchar(128) NOT NULL, `description` text NOT NULL, `created` int(10) NOT NULL DEFAULT '0', PRIMARY KEY […]

围绕循环依赖工作

我尝试了第一次sequelize ,我有一点麻烦让我的数据库模型的工作。 sequelize.sync()失败, Error: Circular Dependency Instruction -> Result => Instruction 这是有道理的,因为我的模型是循环的: const Instruction = db.define('instruction', { id: { type: Sequelize.INTEGER, allowNull: false, primaryKey: true, autoIncrement: true, }, /* more keys here */ }); //each instruction results in one or more results const Result = db.define('result', { id: { type: Sequelize.INTEGER, allowNull: false, primaryKey: true, […]

Node.js / Javascript等价于mysql_real_escape_string()

我需要制作一个JavaScriptstring,它传递给Node.js对MSSQL友好。 这个问题: 使一个JavaScriptstringsql友好有一个很好的答案,解释如何为MySQL转义string: 感谢Paul D'Aoust function mysql_real_escape_string (str) { return str.replace(/[\0\x08\x09\x1a\n\r"'\\\%]/g, function (char) { switch (char) { case "\0": return "\\0"; case "\x08": return "\\b"; case "\x09": return "\\t"; case "\x1a": return "\\z"; case "\n": return "\\n"; case "\r": return "\\r"; case "\"": case "'": case "\\": case "%": return "\\"+char; // prepends a backslash […]

Sequelize – 按降序获取值

我使用sequelize连接到mysql数据库。 我有2个表ApplicationVersion和提供者在我的数据库。 两个表都是关联的。 ApplicationVersion将Provider'uuid'作为外键。 在我的提供程序表中,我有一个名为weight的列。 这个权重字段有整数值。 我想以降序显示元素。 所以我已经在我的函数中使用了这一行order: [Sequelize.col('weight'), 'DESC'],但它不起作用。 如果我从它删除命令,该function运作良好。 这个function: function getactiveProvidersList(user, callback) { Provider.findAll({where: {enabled: 1}, include: [{ model: ApplicationVersion, where: {'active': true}, }], order: [Sequelize.col('weight'), 'DESC'], }).then(function(providers) { callback(providers); }); } 你能告诉我这样做的正确方法,也是我搞砸了。 任何build议是有帮助的。 谢谢!

将一个非常大的string数组传递给SQL存储过程

我有这个存储过程,每个13个字符长的产品的string数组,例如:2345697894131,现在从我的后端代码,我可以通过将其转换为一个CSVstring作为CSV传递它。 因此,在存储过程中,我可以捕获它: @in_product_id VARCHAR(MAX) or maybe VARCHAR(8000) 然后我使用分裂函数与IN来检查各种条件,例如: IF EXISTS (SELECT top 1 * FROM Table WHERE (productid IN (SELECT (value) from dbo.split(@in_product_id,',')))) select查询的语法可能不正确。 但这是采取一系列ID的理想方式。 我担心的是当产品数组太大而超过MAX时,我将不得不跟踪这些被错过的ID。 我需要知道在存储过程中处理这种input的理想方式,还是应该限制要采取的产品数量?

不能在盲目SQL注入中执行子string函数

我的要求是 var request = require('request'); request.post({ 头文件:{'content-type':'application / x-www-form-urlencoded'}, url:“https://www.target.com/account/IsValidLogin”, forms:{ userName:“example@example.org”AND ascii(substring('baaa',1,1))> 2 AND'x'='x“, 密码:“123456” } },函数(错误,响应,正文){ 的console.log(主体); } ); 它崩溃了。 好像目标数据库不支持substring函数。 不过,也许我写错了什么。 据我所知, substring是很常见的function。 如果我把这个example@example.org' AND ascii('b')>2 AND 'x'='x那么它返回true 。 目标数据库types未知。

自动增加Base64 mysql

对我们来说,我们试图在MySQL数据库上使用base64作为唯一的string标识。 有没有可能以自动递增的方式? 我现在发现的唯一方法是用查询来检查它,并且一遍又一遍地扫描一个非常缓慢,烦人的进程,即使是NodeJS也是如此。