LuisRuby
2011-Mar-25 01:24 UTC
Rails 3 + Postgre + incompatible character encodings: ASCII-8BIT and UTF-8
Hi friends! I''m having problems to load some data in a Postgresql database using "rake db:seed". /work/arzamas1$ rake db:seed (in /home/luiz/work/arzamas1) rake aborted! incompatible character encodings: ASCII-8BIT and UTF-8 The database was created with these parameters: CREATE DATABASE arzamas1 WITH OWNER = postgres ENCODING = ''UTF8'' TABLESPACE = pg_default LC_COLLATE = ''pt_BR.utf8'' LC_CTYPE = ''pt_BR.utf8'' CONNECTION LIMIT = -1; This is my database.yml: development: adapter: postgresql encoding: utf8 database: arzamas1 username: postgres password: postgres This is my gemfile: source ''http://rubygems.org'' gem ''rails'', ''3.0.3'' gem ''pg'' <---- (0.10.1) gem ''jquery-rails'' group :development do gem ''rspec-rails'' gem ''annotate-models'' end The classes related with the problem have the following definition (I suppressed some parameters for legibility): -------------------------------------------- class CreateNames < ActiveRecord::Migration def self.up create_table :names do |t| t.string :name, :null=>false end add_index :names, :name, :unique => true end class Name < ActiveRecord::Base has_many :city_names has_many :cities, :through => :city_names validates :name, :presence => true, :uniqueness => { :case_sensitive => false } # Attention! Brasil = brasil end -------------------------------------------- class CreateCities < ActiveRecord::Migration def self.up create_table :cities do |t| t.references :countries, :null=>false t.references :states t.references :observations end add_index :cities, [:countries_id, :states_id], :name => ''cities_index'', :unique => false end class City < ActiveRecord::Base has_one :person has_many :city_names end -------------------------------------------- class CreateCityNames < ActiveRecord::Migration def self.up create_table :city_names do |t| t.references :cities, :null=>false t.references :names, :null=>false t.string :idiom, :null=>false, :default=>''pt'', :limit=>2 t.boolean :use_this, :default=>true end add_index :city_names, [:cities_id, :names_id], :name => ''city_names_index'', :unique => true end class CityName < ActiveRecord::Base belongs_to :cities belongs_to :names end -------------------------------------------- class CreatePeople < ActiveRecord::Migration def self.up create_table :people do |t| t.string :sexo_nasc, :null=>false, :default=>''i'', :limit=>1 # (m)masculino, (f)feminino, (i)indeterminado t.references :infodates t.references :typedates t.references :cities # naturalidade t.references :countries # nacionalidade end end class Person < ActiveRecord::Base belongs_to :cities # naturalidade belongs_to :countries # nacionalidade end -------------------------------------------- And this is the seeds.rb file: # coding: utf-8 Name.create(:name => ''Brasil'') Name.create(:name => ''São Paulo'') Country.create(:sgl_country => ''BR'') CountryName.create(:countries_id => Country.find(:first, :conditions => "sgl_country = ''BR''").id, :names_id => Name.find(:first, :conditions => "name = ''Brasil''").id, :use_this => true) City.create(:countries_id => Country.find(:first, :conditions => "sgl_country = ''BR''").id,:states_id => State.find(:first, :conditions => "sgl_state = ''SP''").id) CityName.create(:cities_id => City.find(:last).id, :names_id => Name.find(:first, :conditions => "name = ''São Paulo''").id) Infodate.create(:data_i => ''1959-04-25'') Person.create(:sexo_nasc => ''m'', :infodates_id => Infodate.find(:first, :conditions => "data_i = ''1959-04-25'' and data_f is null").id, :typedates_id => Typedate.find(:first, :conditions => "usar_para = ''people''").id, :cities_id => CityName.find(:cities_id, :joins => "inner join names on city_names.names_id = names.id", :conditions => "names.name = ''São Paulo''")) The problem comes from this last column attrib - ":cities_id => CityName.find(...". incompatible character encodings: ASCII-8BIT and UTF-8. If I replace the name ''São Paulo'' with another city whose name doesn''t have accent, the error changes to: rake aborted! PGError: ERRO: sintaxe de entrada é inválida para integer: "cities_id" (...invalid syntax for integer...) LINE 1: ...mes.name = ''Planaltina'') AND ("city_names"."id" ''cities_id... ^ : SELECT "city_names".* FROM "city_names" inner join names on city_names.names_id = names.id WHERE (names.name = ''Planaltina'') AND ("city_names"."id" = ''cities_id'') LIMIT 1 I googled a lot but now I really got stuck in the mud :-). Any help will be very appreciated. -- 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Aldo Italo
2011-Mar-25 16:36 UTC
Re: Rails 3 + Postgre + incompatible character encodings: ASCII-8BIT and UTF-8
try this on the top of you seed.rb: # -*- coding: utf-8 -*- -- Posted via http://www.ruby-forum.com/. -- 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
LuisRuby
2011-Mar-25 16:41 UTC
Re: Rails 3 + Postgre + incompatible character encodings: ASCII-8BIT and UTF-8
Hmmm, I tried but didn''t worked. Thanks for reply! On 25 mar, 13:36, Aldo Italo <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> try this on the top of you seed.rb: > > # -*- coding: utf-8 -*- > > -- > Posted viahttp://www.ruby-forum.com/.-- 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.