Please help me solve the following error message:

    syntax error, unexpected tINTEGER, expecting $end

I have this model:

Code:

   1. class GeoDatum < ActiveRecord::Base
   2. end

The database contains the table geo_data, which contains the zip_code
column, filled with zip codes.  I get the above error when searching
for a zip code and the zip code exists in the table.   Here is the
console output:

    >> GeoDatum.find_by_zip_code(95035)
    SyntaxError: compile error
    /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/base.rb:2203: syntax error, unexpected tINTEGER,
expecting $end
    "95036
          ^
        from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/base.rb:2203:in `compute_type'
        from /opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/
active_support/core_ext/kernel/reporting.rb:11:in `silence_warnings'
        from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/base.rb:2200:in `compute_type'
        from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/base.rb:1640:in `instantiate'
        from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/base.rb:661:in `find_by_sql'
        from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/base.rb:661:in `collect!'
        from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/base.rb:661:in `find_by_sql'
        from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/base.rb:1553:in `find_every'
        from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/base.rb:1510:in `find_initial'
        from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/base.rb:613:in `find'
        from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/
active_record/base.rb:1905:in `find_by_zip_code'
        from (irb):3

I notice that the zip code 95035 is mysteriously incremented by one to
become 95036 in the error message.  Interestingly, when the zip code
does not exist, no error is produced:

    >> GeoDatum.find_by_zip_code(11111)
    => nil
    >>

I am following the examples in "RailsSpace" by Hartl.  I am using Ruby
1.8.7 and Rails 2.3.2.  Not sure if this is a Ruby bug. See
http://redmine.ruby-lang.org/issues/show/386.

Below is the code that creates the geo_data table.  db:migrate went
fine.  Please help.  Thanks.


Code

   1. class CreateGeoData < ActiveRecord::Migration
   2.   def self.up
   3.     create_table :geo_data do |t|
   4.       t.column :zip_code,  :string
   5.       t.column :latitude,  :float
   6.       t.column :longitude, :float
   7.       t.column :city,      :string
   8.       t.column :state,     :string
   9.       t.column :county,    :string
  10.       t.column :type,      :string
  11.     end
  12.     add_index "geo_data", ["zip_code"], :name =>
"zip_code_optimization"
  13.
  14.     csv_file = "#{RAILS_ROOT}/db/migrate/geo_data.csv"
  15.     fields = '(zip_code, latitude, longitude, city, state,
county, type)'
  16.
  17.     #   execute "LOAD DATA INFILE '#{csv_file}' INTO TABLE
geo_data FIELDS " +
  18.     #  "TERMINATED BY ',' OPTIONALLY ENCLOSED BY \"\"\"\" " +
  19.     # "LINES TERMINATED BY '\n' " + fields
  20.
  21.     execute "LOAD DATA LOCAL INFILE '#{csv_file}' INTO TABLE
geo_data FIELDS " +
  22.     "TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' " +
  23.     "LINES TERMINATED BY '\n' " + fields
  24.
  25.   end
  26.
  27.   def self.down
  28.     drop_table :geo_data
  29.   end
  30. end


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to