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

Arithmetic overflow error converting int to data type numeric #149

Closed kdcarlisle42 closed 7 years ago

kdcarlisle42 commented 7 years ago

When I run: mongify translation database.config > translation.rb, I always receive an error. I tried swapping out the activexxx gems and the tiny_tds gem, but I still receive the error.

MacBook Pro: Sierra 10.12.5 Ruby: ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16]

Gems: activemodel (4.2.8) activerecord (4.2.8) activerecord-sqlserver-adapter (4.2.8) activesupport (4.2.8) arel (6.0.4) bigdecimal (default: 1.3.0) bson (1.12.5) bson_ext (1.12.5) builder (3.2.3) concurrent-ruby (1.0.5) did_you_mean (1.1.0) highline (1.7.8) i18n (0.8.6) io-console (default: 0.4.6) json (default: 2.0.2, 1.8.6) mini_portile2 (2.2.0) minitest (5.10.1) mongify (1.3.1) mongo (1.12.5) net-telnet (0.1.1) openssl (default: 2.0.2) power_assert (0.4.1) psych (default: 2.2.2) rake (12.0.0) rdoc (default: 5.0.0) test-unit (3.2.3) thread_safe (0.3.6) tiny_tds (1.3.0) tzinfo (1.2.3) xmlrpc (0.2.1)

Exception: /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-sqlserver-adapter-4.2.8/lib/active_record/connection_adapters/sqlserver/database_statements.rb:352:in each': TinyTds::Error: Arithmetic overflow error converting int to data type numeric.: EXEC sp_executesql N'SELECT CAST(1 AS decimal(4,4)) AS value' (ActiveRecord::StatementInvalid) from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-sqlserver-adapter-4.2.8/lib/active_record/connection_adapters/sqlserver/database_statements.rb:352:inhandle_to_names_and_values_dblib' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-sqlserver-adapter-4.2.8/lib/active_record/connection_adapters/sqlserver/database_statements.rb:341:in handle_to_names_and_values' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-sqlserver-adapter-4.2.8/lib/active_record/connection_adapters/sqlserver/database_statements.rb:316:in_raw_select' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-sqlserver-adapter-4.2.8/lib/active_record/connection_adapters/sqlserver/database_statements.rb:311:in block in raw_select' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-4.2.8/lib/active_record/connection_adapters/abstract_adapter.rb:484:inblock in log' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-4.2.8/lib/active_support/notifications/instrumenter.rb:20:in instrument' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-4.2.8/lib/active_record/connection_adapters/abstract_adapter.rb:478:inlog' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-sqlserver-adapter-4.2.8/lib/active_record/connection_adapters/sqlserver/database_statements.rb:311:in raw_select' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-sqlserver-adapter-4.2.8/lib/active_record/connection_adapters/sqlserver/database_statements.rb:260:insp_executesql' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-sqlserver-adapter-4.2.8/lib/active_record/connection_adapters/sqlserver/database_statements.rb:19:in exec_query' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-sqlserver-adapter-4.2.8/lib/active_record/connection_adapters/sqlserver/database_statements.rb:215:inselect' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-4.2.8/lib/active_record/connection_adapters/abstract/database_statements.rb:32:in select_all' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-4.2.8/lib/active_record/connection_adapters/abstract/query_cache.rb:70:inselect_all' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-4.2.8/lib/active_record/connection_adapters/abstract/database_statements.rb:38:in select_one' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-4.2.8/lib/active_record/connection_adapters/abstract/database_statements.rb:43:inselect_value' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-sqlserver-adapter-4.2.8/lib/active_record/connection_adapters/sqlserver/schema_statements.rb:333:in block in column_definitions' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-4.2.8/lib/active_record/result.rb:51:inblock in each' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-4.2.8/lib/active_record/result.rb:51:in each' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-4.2.8/lib/active_record/result.rb:51:ineach' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-sqlserver-adapter-4.2.8/lib/active_record/connection_adapters/sqlserver/schema_statements.rb:286:in map' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-sqlserver-adapter-4.2.8/lib/active_record/connection_adapters/sqlserver/schema_statements.rb:286:incolumn_definitions' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activerecord-sqlserver-adapter-4.2.8/lib/active_record/connection_adapters/sqlserver/schema_statements.rb:48:in columns' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/mongify-1.3.1/lib/mongify/database/sql_connection.rb:75:incolumns_for' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/mongify-1.3.1/lib/mongify/translation.rb:73:in block in load' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/mongify-1.3.1/lib/mongify/translation.rb:71:ineach' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/mongify-1.3.1/lib/mongify/translation.rb:71:in load' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/mongify-1.3.1/lib/mongify/cli/command/worker.rb:66:inexecute' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/mongify-1.3.1/lib/mongify/cli/application.rb:28:in execute!' from /Users/kcarlisle/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/mongify-1.3.1/bin/mongify:15:in<top (required)>' from /Users/kcarlisle/.rbenv/versions/2.4.0/bin/mongify:22:in load' from /Users/kcarlisle/.rbenv/versions/2.4.0/bin/mongify:22:in

'

I did just try the translation process on a different sql data, same server, and it worked. So how do I determine what table/view is causing the problem and how do I get around it (short of making a copy of the database and deleting the table).

anlek commented 7 years ago

Sorry to say but this seems to be an issue with TinyTds and not Mongify.

You can try to ignore all tables except one and test each table import. Time-consuming but it's the only way at the moment to find the problem.

Good luck, Andrew