rubyforen.de
http://forum.ruby-portal.de/

Wie Verbindung zu MySQL Datenbank herstellen?
http://forum.ruby-portal.de/viewtopic.php?f=14&t=26780
Seite 1 von 1

Autor:  RORneedy [ 14 Mai 2016, 16:02 ]
Betreff des Beitrags:  Wie Verbindung zu MySQL Datenbank herstellen?

Hallo zusammen,

um mein derzeitiges Problem in einem Satz zusammenzufassen:
Wie schaffe ich es neben meiner in Rails erstellten Datenbank (die hervorragend funktioniert) auf eine bereits bestehende MySQL Datenbank (nicht mit Rails erstellt) zuzugreifen um Daten auszulesen?

Kurz zu meinem Setup: Ich arbeite mit Rails 4.2.6 unter Windows 7 (64bit). Das gem mysql2 habe ich bereits installiert.

Nun etwas ausführlicher zu meinem aktuellen Stand:
Ich habe in meiner Webapplication eine Benutzerverwaltung die Userdaten in ihrer Datenbank enthält. Im file schema.rb ist hinterlegt wie die Tabelle (in diesem Fall 'users') aufgebaut ist und im file user.rb wird die dazugehörige Modelklasse erstellt. Außerdem wird ja noch im file database.yml der verwendete Datenbankadapter und weitere Parameter für die jeweiligen Umgebungen spezifiziert. Funktioniert soweit auch alles wunderbar.
Jetzt möchte ich zusätzlich auf eine "externe" MySQL Datenbank zugreifen. Hierfür muss ich doch deren Parameter zusätzlich in der database.yml angeben und eine Modelklasse erstellen? Zumindest habe ich das so in den etlichen Anleitungen die ich in den letzten Tagen im Netz gefunden habe so verstanden.

Hier mal der Inhalt meiner database.yml



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

default: &default
adapter: sqlite3
pool: 5
timeout: 5000

mysql: &mysql
adapter: mysql2
encoding: utf8
reconnect: false
pool: 5
username: Username
password: Passwort
host: https://zur-Datenbank.de
prepared_statements: false

development:
<<: *default
database: db/development.sqlite3

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: db/test.sqlite3

production:
<<: *default
database: db/production.sqlite3

mysql_development:
<<: *mysql
database: Datenbank

mysql_test:
<<: *mysql
database: Datenbank

mysql_production:
<<: *mysql
database: Datenbank


An Modelklassen habe ich zusätzlich diese jeweils in einem eigenen file:



1
2
3
4
class MysqlBase < ActiveRecord::Base
self.abstract_class = true
establish_connection "mysql_#{Rails.env}"
end




1
2
3
class EfvsTable < MysqlBase
self.table_name = "efvs" # Tabelle auf die in der Datenbank zugegriffen werden soll
end


Es müsste doch nach der erfolgreichen Implementierung in der Console möglich sein mit efvs.first auf das erste Objekt in der Tabelle zuzugreifen? Mir hat es allerdings in der Console immer folgenden NameError raus: undefined local variable or method 'efvs' for main:Objekt
Anschließend kommet noch haufenweise Code mit from ... mit dem ich überhaupt nichts anfangen kann.

Einen zusätzlichen Eintrag in schema.rb brauche ich ja nicht, da die Datenbank nicht mit Rails erstellt wurde?

Was habe ich an dem Ganzen nicht bzw. falsch verstanden? Mit einem Link zu einer ausführlichen Anleitung (die beschreibt was bei dem Setup wirklich vor sich geht) wäre mir sehr geholfen.
Vielleicht kann mir aber auch jemand direkt ein paar Tips geben?

Ich bin momentam wirklich schon an einem Punkt wo ich nicht mehr weiß wie ich das Ding zum laufen bringen soll.

Schon mal vielen Dank für eure Hilfe!

Autor:  Manchotix [ 15 Mai 2016, 12:53 ]
Betreff des Beitrags:  Re: Wie Verbindung zu MySQL Datenbank herstellen?

Hallo und Willkommen im Forum RORneedy :-)

also wenn ich das richtig verstanden habe willst du eine schon existierende Datenbank mit RoR verwenden aber RoR findet diese nicht so auf Anhieb.
Dazu gibt es hier im Forum schon einmal eine ähnliche Frage die dir Vielleicht weiter helfen kann und auch noch einmal ein Link zur Hilfe.
http://forum.ruby-portal.de/viewtopic.php?f=14&t=26756
https://hackhands.com/ruby-rails-tutorial-creating-rails-instance-existing-mysql-db/

RORneedy hat geschrieben:
Einen zusätzlichen Eintrag in schema.rb brauche ich ja nicht, da die Datenbank nicht mit Rails erstellt wurde?

Naja, sollte man schon machen, aber wie du schon richtig eingestellt hast in der database.yml bekommst du ein Verbindung zu der Datenbank und brauchst nur noch


rake db:schema:dump
ausführen um von deiner oder deinen Datenbanken ein neues Schema erstellen zu lassen.
Dadurch bekommst du vermutlich deine Schema für die externe Mysql-DB

Vielleicht solltest du auch nochmal so einwenig grob die Docs von RoR lesen hilft bestimmt weiter gewisse dinge und vorgänge zu verstehen.
http://guides.rubyonrails.org/

mfg Manchotix

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/