尝试通过Ruby将行插入SQLite时出现“语法错误,意外的tIDENTIFIER ...”

时间:2013-10-06 19:04:38

标签: sql ruby sqlite

有人有什么想法吗?我在bash中收到此错误消息...

insert_code_sam.rb:31: syntax error, unexpected tIDENTIFIER, expecting ')'
    "INSERT INTO index1 (name) VALUES ("test1");"
                                             ^
insert_code_sam.rb:32: syntax error, unexpected ')', expecting end-of-input

在单个文件insert_code_sam.rb中,我正在尝试创建一个新的数据库,创建两个表,并插入一个测试行。创建SQlite表没有问题,但我似乎无法插入行。

require "sqlite3"

db = SQLite3::Database.new( "new_database.db" )

db.execute( 
  "CREATE TABLE index1 (
    id INTEGER PRIMARY KEY AUTOINCREMENT, 
    name TEXT,
    tagline TEXT,
    blurb TEXT,
    photo_url TEXT);"
) 

db.execute( 
  "CREATE TABLE student_profile (
    id INTEGER PRIMARY KEY AUTOINCREMENT, 
    name_id INTEGER,
    thumbnail_url TEXT,
    background_url TEXT,
    quote TEXT,
    bio TEXT,
    education TEXT,
    work TEXT,
    github TEXT,
    treehouse TEXT,
    codeschool TEXT,
    coderwall TEXT);"
) 

  db.execute(
    "INSERT INTO index1 (name) VALUES ("test1");"
  )

3 个答案:

答案 0 :(得分:1)

db.execute(
    "INSERT INTO index1 (name) VALUES ('test1');"
  )

答案 1 :(得分:1)

如果您想使用""分隔符,请选择其他方式:

db.execute(
    "INSERT INTO index1 (name) VALUES (\"test1\");"
  )

答案 2 :(得分:0)

您过早地结束了字符串 - 您的代码不是有效的Ruby语法。 SQLite expects single quoted strings, anyway。解决方案是使用VALUES的单引号:

db.execute(
  "INSERT INTO index1 (name) VALUES ('test1');"
)