Ruby ODBC错误37000(102)Sql语法错误

时间:2014-07-03 21:16:53

标签: sql ruby sql-server null syntax-error

我使用ODBC有以下ruby数据库插入。连接很好。

 dbh.do( "INSERT INTO prowlerRunningResults(ProwlerDriver, SourceURL, Title, DestinationURL, FileSource, FileType, FileName, LastModified, FileSize, HashMD5, HashSHA256, ImageBinary) 
            VALUES (#{driver}, #{source}, #{title}, 'NA', #{imgSrc},  #{fileType},  #{fileName},  #{lastModified}, #{fileSize},   #{md},   #{sha},   #{binary}   )" )

然而,我得到Error message: 37000 (102) [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near ','.考虑到所涉及的逗号数量,这可能会更有帮助。不过,看了看我看起来很简单就看不出问题!!

所以问题:

  1. 您能检测到报告的语法错误吗?
  2. 我想插入NULL而不是'NA' - 但不知道如何在ruby中执行此操作。怎么做?
  3. 编辑: 可能是DB Schema的问题。 物理DB将FileSize作为int。所以我更新了代码以插入#{fileSize.to_i},但ImageBinary是一个varbinary(MAX) - 也许我可以将文件作为HEX写入字符串?你觉得怎么样?

1 个答案:

答案 0 :(得分:0)

要进行调试,请尝试查看扩展字符串。你可以放,记录或加注。

sql = "INSERT INTO prowlerRunningResults(ProwlerDriver, SourceURL, Title, DestinationURL, FileSource, FileType, FileName, LastModified, FileSize, HashMD5, HashSHA256, ImageBinary) 
        VALUES (#{driver}, #{source}, #{title}, 'NA', #{imgSrc},  #{fileType},  #{fileName},  #{lastModified}, #{fileSize},   #{md},   #{sha},   #{binary}   )"
puts sql
logger.info sql
raise sql

您可能忘记了某些字符串数据的单引号。