2016-12-04 44 views
0

这是我的代码插入我的简单的“系列”表中的几行记录插入到表:如何使用续集

db = sequel.postgres(config['dbname'],:user=>config['user'],:password=>config['password'],:host=>config['host'],:port=>config['port'],:max_connections=>10) 
@db.create_table? 'series' do 
     primary_key "series_id" , :autoincrement=>true 
     String "series_name" 
    end 
seriesDS = db['series'] 
seriesDS.insert('series_name' => 'test_value') 

seriesDS.insert我得到一个

Sequel::DatabaseError - PG::SyntaxError: ERREUR: erreur de syntaxe sur ou près de « series » 

我没无法在STDOUT中获得完整的SQL查询以进行分析。这很奇怪,因为我加了这个:

logger = Logger.new STDOUT 
    logger.level = Logger::DEBUG 
    db.loggers << logger 

它似乎是生成错误的SQL,但我不知道错误的来源。

我使用:

  • 红宝石2.2.5
  • 续集4.4.1
  • PostgreSQL的9.6

该程序使用ruby -E utf8启动。

回答

0

续集使用Ruby符号来表示SQL标识符。至少,您必须使用seriesDS = db[:series]

其他情况下,你想要一个SQL标识符,你应该从使用字符串切换到符号。

+0

自从这个问题我发现更多的红宝石,我明白符号是一个更好的方式去。但是,如果符号是强制性语法,那么为什么create table工作? – Sid