Double quotes have a special meaning in SQL. They are used for quoting column and table names. MySQL usually runs in a non-compliant mode, which allows you to write SQL that assumes differing conventions. DataMapper runs in a strict mode that forces MySQL to be (more) compliant with the standards.
Just use single quoted strings if you're hard-coding the whole query. However, what you should really be doing is using bind parameters, so that they can be transported to the DBMS safely. adapter.execute("INSERT INTO dom_nodes (page_id, tag_name, parent_id, dom_id) VALUES (?, ?, ?, ?)", 1, "DIV", 2, 3) Il giorno 28/mag/2012, alle ore 11:06, Arvind Satyanarayan ha scritto: > Hi All, > > Apologies if this gets posted twice... I've been running into some strange > issues when trying to execute raw SQL queries via an adapter. For example, > with this query: > > DataMapper.repository(:default).adapter.execute('insert into dom_nodes > (page_id, tag_name, parent_id, dom_id) values (1, "DIV", 2, 3)') > > I get the following error (although the query is valid and runs successfully > via the MySQL console). > > Unknown column 'DIV' in 'field list' (code: 1054, sql state: 42S22, query: > insert into dom_nodes (page_id, tag_name, parent_id, dom_id) values (1, > "DIV", 2, 3) > > Changing the double quotes around DIV to single quotes cause it to execute > successfully via DataMapper. However, for more complex queries where I escape > single quotes, I get an "SQL syntax" error (but again, the query that's part > of the error message is valid and runs successfully in the MySQL console). > Here's an example of such a query: > http://pastiebin.com/?page=p&id=4fc2c7e7e8ecc > > Any ideas on what could be causing this? Are there things DataMapper is doing > in the background for adapter query executions? > > Thanks! > > -Arvind > > > -- > You received this message because you are subscribed to the Google Groups > "DataMapper" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/datamapper/-/zrtVU10H73UJ. > To post to this group, send email to datamapper@googlegroups.com. > To unsubscribe from this group, send email to > datamapper+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/datamapper?hl=en. -- You received this message because you are subscribed to the Google Groups "DataMapper" group. To post to this group, send email to datamapper@googlegroups.com. To unsubscribe from this group, send email to datamapper+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/datamapper?hl=en.