Please help me solve the following error message:
syntax error, unexpected tINTEGER, expecting $end
I have this model:
Code:
- class GeoDatum < ActiveRecord::Base
- 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
- class CreateGeoData < ActiveRecord::Migration
- def self.up
-
create_table :geo_data do |t|
-
t.column :zip_code, :string
-
t.column :latitude, :float
-
t.column :longitude, :float
-
t.column :city, :string
-
t.column :state, :string
-
t.column :county, :string
-
t.column :type, :string
-
end
-
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