anlek / mongify

Mongify allows you to map your data from a sql database and into a mongodb document database.
http://github.com/anlek/mongify
MIT License
317 stars 82 forks source link

Cannot process SQL because of backtick characters are missing #173

Closed xkovacikm closed 6 years ago

xkovacikm commented 6 years ago

Hi. I have order table in my SQL database. While executing mongify process command i get this error:

*Mysql::Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'order' at line 1: SELECT COUNT() FROM order**

I think it's because order is reserved keyword in MySQL and query SELECT COUNT(*) FROM order is incorrect. It should be SELECT COUNT(*) FROM (backtick)order(backtick)

(can't write backtick character here because of markdown)

translation.rb was created automatically by your mongify translation command.

Here is the whole error message:

/var/lib/gems/2.3.0/gems/activerecord-4.2.10/lib/active_record/connection_adapters/mysql_adapter.rb:346:in query': Mysql::Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'order' at line 1: SELECT COUNT(*) FROM order (ActiveRecord::StatementInvalid) from /var/lib/gems/2.3.0/gems/activerecord-4.2.10/lib/active_record/connection_adapters/mysql_adapter.rb:346:inblock in exec_without_stmt' from /var/lib/gems/2.3.0/gems/activerecord-4.2.10/lib/active_record/connection_adapters/abstract_adapter.rb:484:in block in log' from /var/lib/gems/2.3.0/gems/activesupport-4.2.10/lib/active_support/notifications/instrumenter.rb:20:ininstrument' from /var/lib/gems/2.3.0/gems/activerecord-4.2.10/lib/active_record/connection_adapters/abstract_adapter.rb:478:in log' from /var/lib/gems/2.3.0/gems/activerecord-4.2.10/lib/active_record/connection_adapters/mysql_adapter.rb:345:inexec_without_stmt' from /var/lib/gems/2.3.0/gems/activerecord-4.2.10/lib/active_record/connection_adapters/mysql_adapter.rb:255:in exec_query' from /var/lib/gems/2.3.0/gems/activerecord-4.2.10/lib/active_record/connection_adapters/abstract/database_statements.rb:356:inselect' from /var/lib/gems/2.3.0/gems/activerecord-4.2.10/lib/active_record/connection_adapters/mysql_adapter.rb:479:in select' from /var/lib/gems/2.3.0/gems/activerecord-4.2.10/lib/active_record/connection_adapters/abstract/database_statements.rb:32:inselect_all' from /var/lib/gems/2.3.0/gems/activerecord-4.2.10/lib/active_record/connection_adapters/abstract/query_cache.rb:70:in select_all' from /var/lib/gems/2.3.0/gems/activerecord-4.2.10/lib/active_record/connection_adapters/abstract/database_statements.rb:38:inselect_one' from /var/lib/gems/2.3.0/gems/activerecord-4.2.10/lib/active_record/connection_adapters/abstract/database_statements.rb:43:in select_value' from /var/lib/gems/2.3.0/gems/mongify-1.3.2/lib/mongify/database/sql_connection.rb:114:incount' from /var/lib/gems/2.3.0/gems/mongify-1.3.2/lib/mongify/database/sql_connection.rb:82:in select_rows' from /var/lib/gems/2.3.0/gems/mongify-1.3.2/lib/mongify/translation/process.rb:29:inblock in copy_data' from /var/lib/gems/2.3.0/gems/mongify-1.3.2/lib/mongify/translation/process.rb:28:in each' from /var/lib/gems/2.3.0/gems/mongify-1.3.2/lib/mongify/translation/process.rb:28:incopy_data' from /var/lib/gems/2.3.0/gems/mongify-1.3.2/lib/mongify/translation/process.rb:14:in process' from /var/lib/gems/2.3.0/gems/mongify-1.3.2/lib/mongify/cli/command/worker.rb:72:inexecute' from /var/lib/gems/2.3.0/gems/mongify-1.3.2/lib/mongify/cli/application.rb:28:in execute!' from /var/lib/gems/2.3.0/gems/mongify-1.3.2/bin/mongify:17:in<top (required)>' from /usr/local/bin/mongify:23:in load' from /usr/local/bin/mongify:23:in

'

Thank you ;)

anlek commented 6 years ago

Seems like it things ORDER as in a reserved word in SQL, my recommendation would be to rename the table to orders and see if you can work with that.