Poczatkujacy - problem RoR+MySQL

Witam serdecznie, jako to mój pierwszy post.

Mam problem - dopiero się uczę (książka “Agile…” 2nd ed.) i mam problem już na samym początku przy użyciu rake db:migrate, wyskakuje mi błąd: “#42000Unknown database ‘depot_development’”
Używałem wielkiego G! i znalazłem informacje o dodaniu w pliku database.yml info o porcie 3210… jak dodaje wyskakuje mi z kolei: “rake aborted! bad file descriptor - connect <2>”

Miał ktoś z Was styczność z takim problemem lub może wskazać mi gdzie leży błąd??
Pozdrawiam

Jaki system? Mysql działa? Jeśli nic mu nie zmieniałeś to nie musisz nic kombinować z portem! “bad file descriptor - connect <2>” świadczy o tym, że railsy nie mogłby nawiązać połączenia z bazą. Czy wpisałeś login i hasło do pliku databas.yml?

nie, nie wpisałem - dla tego, że na localhoscie mam mysql’a bez hasla ani loginu. Po prostu bezhasłowe konto root’a.
Spróbuję za chwilkę przeinstalować mysql’a i stworzyć w trakcie instalacji jakieś hasło dla roota. Dam znać, co wyszło.

(zrzut fragmentu database.yml :

development:
adapter: mysql
database: depot_development
username: root
password:
host: localhost)

niestety reinstalacja mysqla nic nie dała… czekam na pomoc z Waszej strony

Unknown database 'depot_development … stworzyłeś baze danych o nazwe depot_development?

połącz się klientem mysql na serwer na konto administratora
i odpal komende
create database depot_development;

sprawdze to troszke pozniej - najprawdopodobniej posypaly mi sie uslugi windowsa :confused: nie mam czasu zeby to naprawiac - czeka mnie format (zaoszczedze w ten sposob troche czasu :wink: ). Dam znac, co wyszlo…

a do tworzenia bazy danych uzylem bodajze mysql -u root create database depot_development

Przegapiłem ten pierwszy komunikat, przed zmianą portu. Tak jak pisze Ci lordoza, nie stworzyłeś bazy ‘depot_development’. Login i hasło zostaw tak jak jest, bo taki komunikat świadczy o tym, że railsy połączyły się z bazą.

Widocznie jednak coś się nie udało ;). Odpal “mysql -u root” i wykonaj polecenie “show databases”. Prawd. bazy nie będzie w spisie.

Btw, reinstalować nie ma co, to nie windows ;p.

wiem, że mało w tym winy windowowsa, ale ogólnie ostatnio nie działa tak jak powinien - muszę nauczyć go szacunku :wink:

dopiero dziś mogę powiedzieć, dlaczego nie działało - było to moje pierwsze zetknięcie z MySQL’em i dopiero przeczytanie komend w helpie coś dało :wink:

po komendzie create database nie dawałem średnika na końcu.

Teraz działa ok :wink:

pozdrawiam i dziękuję za pomoc :slight_smile:

Hej, nie chcę tworzyć nowego tematu więc kolejną sprawę zamieszczam tutaj :slight_smile:

Kod (bezpośrednio z ksiązki :P):
def self.up
create_table :line_items do |t|
t.column :product_id, :integer, :null => false
t.column :order_id, :integer, :null => false
t.column :quantity, :integer, :null => false
t.column :total_price, :decimal, :null => false, :precision => 8, :scale => 2
end

execute "alter table line_items add constraint fk_line_item_products
    foreign key (product_id) references products(id)"
    
execute "alter table line_items add constraint fk_line_item_orders
    foreign key (order_id) references orders(id)"

end

dostaję “po mordzie” w trakcie migracji (error):
rake aborted!
Mysql::Error: #42000You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘order(id)’ at line 2: alter table line_items add constraint fk_line_item_orders foreign key (order_id) references orders(id)

Czekam na porady specjalistów, bo już troszkę czasu nad tym spędziłem i samemu nic nie znalazłem (tzn. jedną literówkę, ale nie zmieniła ona postaci rzeczy :/)

pozdrawiam :slight_smile:

Hm nie widać za bardzo błędu, ale:
-spróbuj nie wstawiać znaku entera w stringu (niech to będzie jedna linia)
-wklej te polecenia bezpośrednio w konsoli (te 2 ostatnie sqle) i sprawdź czy jest błąd
-najprawdopodobniej to nie pomoże, ale tonący chwyta się brzytwy: daj średnik na końcu tych “ręcznych” sqli

A foreign key reference nie jest obslugiwane przypadkiem tylko przez InnoDB ? Domyslna engine to MyISAM wiec moze w tym problem ??

nie wydaje mi sie, ogolnie Agile jest pisane pod katem MySQL, wiec conajmniej dziwne by bylo, gdyby tak przeskoczyli na coś innego. A powyzsze porady nic nie dały, dalej syf. Nic, trzeba jeszcze raz wszystko przeanalizować. Jak odgadnę, co było nie tak, to dam znać.
Pozdrawiam

InnoDB to mysql, to jeden z kilku enginow ktore mysql posiada, ale ogolnie to tylko sugestia :slight_smile:

InnoDB obsługuje foreign keys, MyISAM nie. Ale konstrukcje dodawania referencji nie powodują błędów jeśli używany jest MyISAM.

Jak na mój gust podejrzany jest fragment order(id) - niby skąd order(id) a nie order[b]s/b? Czy dokładnie wkleiłeś na forum to co wypluł MySql?

Zwróć też uwagę, że order jest słowem kluczowym w SQL.