2012-09-27 4 views
0

datamapper에서 관계가없는 테이블에서 모든 레코드를 삭제하는 방법은 무엇입니까? 문제의 테이블은 포스트와 태그 테이블 (다 대다 관계)이고 태그가없는 모든 포스트를 삭제하고 싶습니다. Post.all(:tags => nil)을하려고 할 때 어떤 이유로,이 오류가 나타납니다Datamapper : 관계가없는 모든 레코드 삭제

DataObjects::SyntaxError: ERROR: operator does not exist: integer = character varying 
LINE 1: ...amp", "comment_count" FROM "posts" WHERE NOT("id" IN (SELECT... 
                  ^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. 
(code: 52461700, sql state: 42883, query: SELECT "id", "timestamp", "source_network", "source_post_id", "source_user_id", "source_link", "img_full_url", "img_thumb_url", "approved", "review_timestamp", "comment_count" FROM "posts" WHERE NOT("id" IN (SELECT "tags"."name" FROM "tags" INNER JOIN "post_tags" ON "tags"."name" = "post_tags"."tag_name" INNER JOIN "posts" ON "post_tags"."post_id" = "posts"."id")) ORDER BY "id", uri: postgres:[email protected]/hash_tagging?scheme=postgres&user=tom&password=&host=localhost&port=&path=/hash_tagging&query=&fragment=&adapter=postgres) 
    from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:147:in `execute_reader' 
    from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:147:in `block in read' 
    from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:276:in `with_connection' 
    from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-do-adapter-1.2.0/lib/dm-do-adapter/adapter.rb:141:in `read' 
    from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/repository.rb:162:in `read' 
    from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/collection.rb:1117:in `lazy_load' 
    from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/support/lazy_array.rb:409:in `each' 
    from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/collection.rb:504:in `each' 
    from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/collection.rb:976:in `map' 
    from /Users/tom/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/dm-core-1.2.0/lib/dm-core/collection.rb:976:in `inspect' 
    from /Users/tom/.rbenv/versions/1.9.3-p194/bin/irb:12:in `<main>' 

사람이 내가 잘못 알고 있나요?

P. 태그 테이블은 (핵심 인 이름) 하나 개의 컬럼을 가지고 있으며, 관계는 여전히 같은 오류와 함께 제공되는 자동 생성 datamapper

답변

1

변경에 의해 하나를 NOT("id" IN-"id" NOT IN

DELETE FROM posts WHERE id NOT IN (SELECT id FROM tags) 
+0

입니다 'IN' 비트를 가리키고있다. –