ruby-on-rails - left - rails sql query
ActiveRecord:: NoDatabaseError: el usuario local con ID no existe (3)
El error no está relacionado con los datos de su empresa. Mirando las líneas superiores de tu registro ...
ActiveRecord::NoDatabaseError: local user with ID 501 does not exist
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:661:in `rescue in connect''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `connect''
... está claro que Rails no se puede conectar a la base de datos.
El usuario local mencionado probablemente sea un usuario del sistema operativo que se configuró para acceder a la base de datos de Postgres y su registro se eliminó o corrompió.
Intente conectarse a su base de datos usando psql
desde la consola y vea si hay algún problema. El comando debería verse algo como esto.
psql --host=localhost --port=5432 --username=<your postgres user> --password --dbname=koboApi_development
Como su username
no está configurado en la configuración de su base de datos, probablemente provenga de una variable de entorno. Verifique que contenga el valor correcto.
Desarrollar una aplicación Rails solo de API para consumir datos de una API, filtrar un número de campos y luego difundir los campos que queremos públicos.
Mi aplicación devolvía los datos normalmente, pero me di cuenta de que en el nivel de API de origen, cambiamos el tipo de datos para uno de los campos de datos que estamos exponiendo. Para acomodar, comprometí mi trabajo, revisé una nueva sucursal, realicé migraciones para cambiar el tipo de datos de un campo de datos, decidí que no estaba contento con cómo funcionaba, retrotrayé la migración, me comprometí y compruebo la rama principal. La aplicación está devolviendo datos de forma normal. Sin embargo, ahora cuando .last
los registros de mi modelo en Rails Console usando métodos de búsqueda como .last
, .last
, etc., obtengo el siguiente error. Estaban trabajando bien antes.
He mirado alrededor y no he visto ningún hilo en este error en particular (todos parecen tratar de encontrar registros individuales para la página del programa), aunque este y este hilo (por extensión) parecen más cercanos. Y al verificar los usuarios en la base de datos que uso, muestra que la identificación del usuario ("501") en el error no está presente.
¿Qué hice y qué debo hacer para poder llamar a los métodos de búsqueda nuevamente? ¿Debo crear ese usuario al que se hace referencia en el error en mi db? (¿Y por qué no es el usuario predeterminado el que siempre uso para conectarme a mi db? ¿De dónde vino ese ID de usuario en el error? ¿Importa?)
ps - en caso de que sea relevante, utilicé rake db:rollback
para revertir mi migración según este hilo.
Gracias por adelantado.
Consola Rails
.2.1 :001 > KoboApi.first
ActiveRecord::NoDatabaseError: local user with ID 501 does not exist
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:661:in `rescue in connect''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `connect''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:242:in `initialize''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activerecord-postgis-adapter-3.1.4/lib/active_record/connection_adapters/postgis_adapter.rb:51:in `initialize''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activerecord-postgis-adapter-3.1.4/lib/active_record/connection_adapters/postgis/create_connection.rb:37:in `new''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activerecord-postgis-adapter-3.1.4/lib/active_record/connection_adapters/postgis/create_connection.rb:37:in `postgis_connection''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:438:in `new_connection''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:448:in `checkout_new_connection''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:422:in `acquire_connection''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:349:in `block in checkout''
from /Users/toby/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:348:in `checkout''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:263:in `block in connection''
from /Users/toby/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:262:in `connection''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:571:in `retrieve_connection''
... 13 levels...
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/commands/console.rb:9:in `start''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/commands/commands_tasks.rb:68:in `console''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/commands/commands_tasks.rb:39:in `run_command!''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/commands.rb:17:in `<top (required)>''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:274:in `require''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:274:in `block in require''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:240:in `load_dependency''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:274:in `require''
from /Users/toby/code/projects/koboApi-broker/bin/rails:9:in `<top (required)>''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:268:in `load''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:268:in `block in load''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:240:in `load_dependency''
from /Users/toby/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:268:in `load''
from /Users/toby/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require''
from /Users/toby/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require''
Definitivamente estoy obteniendo mis registros, están ingresando a la base de datos:
Rails dbconsole
koboApi_development=# select * from kobo_apis limit 1;
id | lemurs_quantity | month_and_year | _geolocation | lemur_category | location_admin1 | location_admin2 | record_id | sighting_month | sighting_year
------+-----------------+----------------+--------------+----------------+-----------------+-----------------+-----------+----------------+---------------
1365 | 1 | | | I_dont_remembe | antsiranana | diana | 1234567 | no_response | 2013
(1 row)
koboApi_development=# /du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
[user] | Superuser, Create role, Create DB, Replication | {}
de mi esquema
ActiveRecord::Schema.define(version: 20160705203507) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
enable_extension "postgis"
create_table "kobo_apis", force: :cascade do |t|
t.integer "lemurs_quantity"
t.date "month_and_year"
t.text "_geolocation"
t.text "lemur_category"
t.string "location_admin1"
t.string "location_admin2"
t.integer "record_id"
t.string "sighting_month"
t.string "sighting_year"
end
create_table "my_spatial_table", force: :cascade do |t|
t.geography "polygon_data", limit: {:srid=>4326, :type=>"polygon", :geographic=>true}
end
end
Mi base de datos.yml
development:
adapter: postgis
encoding: unicode
postgis_extension: postgis # default is postgis
postgis_schema: public # default is public
schema_search_path: public,postgis
database: koboApi_development
pool: 5
test:
adapter: postgresql
encoding: unicode
database: koboApi_test
pool: 5
production:
adapter: postgresql
encoding: unicode
database: koboApi_production
pool: 5
Parece que es el problema de Spring, no la base de datos, si recibes este error:
/Users/yad/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/connection_adapters/postgresql_adapter.rb:661:in `rescue in connect'': local user with ID 501 does not exist
(ActiveRecord::NoDatabaseError)
en el directorio raíz de los raíles, ingrese:
spring stop
debería decir:
Spring stopped.
¡y la migración funcionará después de eso!
Voy a compartir lo que funcionó para mí, suena como una broma, pero no lo es.
Lo encendí y apagué de nuevo .
Lo que quiero decir con esto es que maté la instancia de Redis que necesito ejecutar en paralelo a mi configuración, escondí los cambios locales en la rama y volví a intentarlo. ¡Y funcionó!
Después de eso, maté al servidor Unicornio solamente, abrí el alijo para restaurar mis cambios locales y reinicié. Y sí, todavía funcionó.
Esto no tiene ningún sentido, lo sé y me disculpo por no tener una mejor explicación.
Mi única conjetura es que podría haber mantenido los servidores Unicorn y Redis en funcionamiento durante demasiado tiempo (no puedo recordar la última vez que apagué mi Mac) y algo podría haber quedado en mal estado. Si ese fuera el caso, reiniciar toda la pila podría haber sido la solución.
Espero que esto te dé, querido lector, algo para pensar en este misterioso error.