Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony 2][Doctrine] Problem z mapowaniem tabel
Michal_Sz
post
Post #1





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 9.10.2007

Ostrzeżenie: (0%)
-----


Witam,

Chciałbym zmapować tabelę z bazy mssql, niestety podczas takiej próby pojawia się błąd:


Table xxx has no primary key. Doctrine does not support reverse engineering from tables that don't have a primary key.

Oczywiście tabela xxx jest inną tabelą niż ta którą chcę zmapować.
Czy może mi ktoś podpowiedzieć jak mogę rozwiązać taką sytuację?
Tabela xxx jest nie do ruszenia, ponieważ wykorzystywana jest gdzie indziej
Go to the top of the page
+Quote Post
ohm
post
Post #2





Grupa: Zarejestrowani
Postów: 623
Pomógł: 144
Dołączył: 22.12.2010

Ostrzeżenie: (0%)
-----


Jak mapujesz? Wrzuć co wykonujesz.
Go to the top of the page
+Quote Post
Michal_Sz
post
Post #3





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 9.10.2007

Ostrzeżenie: (0%)
-----


Zaczynam od tego:
console doctrine:mapping:convert yml ./src/My/MyBundle/Resources/config/doctrine/metadata/orm --from-database --force --em=moja_baza --filter=nazwa_tabeli

Już tutaj pojawia się błąd. To samo dzieje się przy console doctrine:mapping:import

Ten post edytował Michal_Sz 17.03.2015, 20:59:59
Go to the top of the page
+Quote Post
ikssde
post
Post #4





Grupa: Zarejestrowani
Postów: 217
Pomógł: 40
Dołączył: 20.08.2008

Ostrzeżenie: (0%)
-----


W czym problem? Doctrine po prostu nie umożliwia wykonania takiej operacji na tabeli która nie ma klucza głównego. Dodaj ten klucz na kopii tabeli albo mapuj ręcznie.
Go to the top of the page
+Quote Post
Michal_Sz
post
Post #5





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 9.10.2007

Ostrzeżenie: (0%)
-----


Ok, ale dlaczego podczas mapowania tabeli_1 błąd ma związek z inną tabelą tej bazy?
Go to the top of the page
+Quote Post
com
post
Post #6





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


Rozumiem, że angielskiego można nie znać ale jaki problem to przetłumaczyć, te komunikaty są napisany dla ludzi wystarczy to przeczytać i masz odpowiedź (IMG:style_emoticons/default/smile.gif) jak nie znasz podstaw relacyjnych baz danych to nie ma co iść dalej, najpierw trzeba się wtedy z nimi zapoznać (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Michal_Sz
post
Post #7





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 9.10.2007

Ostrzeżenie: (0%)
-----


Rozumiem co mówi komunikat, czy chodzi o to, że tabela którą chcę zmapować jest powiązana z tabelą której dotyczy błąd?
Go to the top of the page
+Quote Post
com
post
Post #8





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


http://www.wikiwand.com/pl/Klucz_g%C5%82%C3%B3wny Tak chodzi o zachowanie relacji, bo operujesz na bazie relacyjnej a nie nosql (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Michal_Sz
post
Post #9





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 9.10.2007

Ostrzeżenie: (0%)
-----


No właśnie tak przypuszczałem, ale tabela którą chciałbym zmapować nie jest powiązana z żadną inną.
Co w tym wypadku mi pozostaje? Ręczne stworzenie Entity?
Go to the top of the page
+Quote Post
com
post
Post #10





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


Klucz główny do tabeli dodałeś już?
Go to the top of the page
+Quote Post
Michal_Sz
post
Post #11





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 9.10.2007

Ostrzeżenie: (0%)
-----


NIe, ponieważ tak jak wspominałem wcześniej nie mogę nic zmieniać w tej tabeli dlatego szukam rozwiązanie na zmapowanie tabeli która oczywiście ma klucz główny.
Go to the top of the page
+Quote Post
ikssde
post
Post #12





Grupa: Zarejestrowani
Postów: 217
Pomógł: 40
Dołączył: 20.08.2008

Ostrzeżenie: (0%)
-----


Wygląda na to, że pomimo użycia parametru filter analizowana jest cała baza danych, natomiast wspomniany filtr ogranicza jedynie to co generator wypluwa.

Zrób sobie kopię tej bazy danych, dodaj klucz główny albo skasuj tabelę, która powoduje problem i wtedy zrób mapowanie. Głównym celem Doctrine jest co innego niż mapowanie obiektów na podstawie bazy danych więc nie ma się co spodziewać rewelacji w tej kwestii.
Go to the top of the page
+Quote Post
Michal_Sz
post
Post #13





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 9.10.2007

Ostrzeżenie: (0%)
-----


Chyba rzeczywiście nie pozostaje mi nic innego jak stworzenie bazy z kopią interesującej mnie tabeli, zmapowanie tabeli i korzystanie z niej na oryginalnej bazie.
Bo rozumiem, że takie rozwiązanie nie będzie generować problemów ?
Go to the top of the page
+Quote Post
com
post
Post #14





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


No ale ustawienie klucza nie wygeneruje Ci problemów, chyba ze chodzi o to że nie masz gdzie go postawić, ale to wtedy baza jest źle zbudowana (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Michal_Sz
post
Post #15





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 9.10.2007

Ostrzeżenie: (0%)
-----


niestety nie wiem czy udałoby się coś zmienić w bazie pod kątem kluczy, ponieważ z bazy korzystają inne programy, ja jedynie potrzebuje skorzystać z kilku tabel.
Dlatego najlepszym rozwiązaniem będzie stworzenie kopii bazy, ale tylko z tymi kilkoma tabeli i zmapowanie ich, a potem korzystanie na orginalnej bazie, chyba że się mylę?
Go to the top of the page
+Quote Post
ikssde
post
Post #16





Grupa: Zarejestrowani
Postów: 217
Pomógł: 40
Dołączył: 20.08.2008

Ostrzeżenie: (0%)
-----


Tak będzie najlepiej. Nic nie stoi na przeszkodzie żebyś tak zrobił.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 10:41