Clicky

Skocz do zawartości


Zdjęcie
- - - - -

Połączenie Kohana 3.3 z MsSQL

9 odpowiedzi w tym temacie

  • Zaloguj się, aby dodać odpowiedź

#1 junior89

junior89

    Początkujący

  • Użytkownik
  • Pip
  • 32 postów

Napisano 17 marzec 2014 - 10:47

Czy może ktoś łączył Kohana 3.3 z MsSQL? Znalazłem kilka modułów ale nic mi nie działa.

 

 



#2 Maciek

Maciek

    Senior Mastah

  • Użytkownik
  • PipPipPip
  • 780 postów

Napisano 17 marzec 2014 - 13:46

Masz na myśli MS SQL (php_mssql.dll) czy SQL Server (sterowniki PHP dla Windows)?

 

Ja używam KO3.3 do łączenia z SQL Server'em na co dzień.

Najprościej jest napisać własny driver na bazie jednego z dostępnych dla innych baz.



#3 junior89

junior89

    Początkujący

  • Użytkownik
  • Pip
  • 32 postów

Napisano 17 marzec 2014 - 14:08

Tak więc mam bazę na MS SQL SERVER 2012 i chcę ją połączyć z Kohana 3.3. 

Zainstalowałem Xampa i postawiłem na nim kohane oraz zainstalowałem SQL Server Management Studio i utworzyłem bazę danych. 

 

Z MySql łącze się bez problemu jednak nie mogę połączyć się z  SQL Server.

 

Korzystałem z tego modułu https://github.com/x...o/kohana-mssql 

Jednak mam błąd http://prntscr.com/31lqcg

Próbowałem go rozwiązać jednak bez żadnych pozytywnych efektów.

 

Jeśli jesteś mi w stanie coś więcej powiedzieć to byłbym wdzięczny.

Nigdy wcześniej nie korzystałem z MS SQL Server.



#4 Maciek

Maciek

    Senior Mastah

  • Użytkownik
  • PipPipPip
  • 780 postów

Napisano 17 marzec 2014 - 14:31

Na początek zacznij od zainstalowania sterownika.

Pierwszy wynik z Google z tutorialem: http://davehiren.blo...erver-from.html

Najnowsza wersja sterownika: http://www.microsoft...s.aspx?id=20098

 

Po instalacji i restarcie, phpinfo() powinno zawierać sekcję sqlsrv. Wtedy przyjdzie czas na Kohankę.



#5 junior89

junior89

    Początkujący

  • Użytkownik
  • Pip
  • 32 postów

Napisano 17 marzec 2014 - 14:43

To już robiłem i chyba mam wszystko ok bo phpinfo() pokazuje 

http://prntscr.com/31lzty

http://prntscr.com/31m0yh



#6 Maciek

Maciek

    Senior Mastah

  • Użytkownik
  • PipPipPip
  • 780 postów

Napisano 17 marzec 2014 - 14:51

Pytanie czy musisz korzystać z PDO czy to następstwo chęci skorzystania z podanego na wstępie modułu?

 

Ja osobiście z niego nie korzystam ...



#7 junior89

junior89

    Początkujący

  • Użytkownik
  • Pip
  • 32 postów

Napisano 17 marzec 2014 - 14:56

Oczywiście, że nie muszę korzystać z PDO. Takie rozwiązanie znalazłem i tak to próbowałem zrobić. W takim razie zaproponujesz mi coś?



#8 Maciek

Maciek

    Senior Mastah

  • Użytkownik
  • PipPipPip
  • 780 postów

Napisano 17 marzec 2014 - 15:36

Mamy trzy rozwiązania:

  1. spróbujesz użyć gotowego modułu (np. https://github.com/s...database-sqlsrv - nie sprawdzałem czy działa),
  2. spróbujesz napisać swój driver (na bazie np. driver'a od MySQL),
  3. udostępnię Ci swój driver.

Rozwiązanie numer 1, po szybkim rzucie oka na jego kod, wydaje się być ok, ale jak napisałem wyżej - nie sprawdzałem tego modułu. Nie jest jednak aż tak rozbudowany jak mógłby być - np. brak obsługi funkcji limit().

 

Rozwiązanie numer 2 jest proste - skopiowanie plików od obsługi np. MySQL, zmiana ich nazw, zmiana nazw klas i wywołań funkcji (mysql na sqlsrv).

 

Rozwiązanie numer 3 jest proste, ale dla mnie trochę pracochłonne ze względu na konieczność wywalenia powiązań - mój driver jest dość rozbudowany i bezpośrednio zintegrowany z kilkoma modułami (m.in. ORM). Pozwala mi np. na napisanie poniższego kodu.

$tests = ORM::factory('Test')
	->find_all()
	->limit()
	->offset();

Nie bazuje on jeszcze niestety na składni OFFSET - FETCH, ale dzięki temu działa też dla starszych wersji SQL Server'a (np. 2008).

 

Mimo wszystko, sugeruję na początek rozwiązanie numer 1.



#9 Maciek

Maciek

    Senior Mastah

  • Użytkownik
  • PipPipPip
  • 780 postów

Napisano 18 marzec 2014 - 15:08

@junior89

Nie zapomnij dać nam znać jak Ci poszło. ;)



#10 junior89

junior89

    Początkujący

  • Użytkownik
  • Pip
  • 32 postów

Napisano 25 marzec 2014 - 19:31

Sorki, że po tak długim czasie odpisuje ale musiałem pozostawić projekt i na jakiś czas wyjechać :)

 

Próbowałem rozwiązanie 1 jednak pojawiły się problemy i postanowiłem jeszcze raz spróbować połączenia przy użyciu PDO.

 

Jeszcze raz skorzystałem z wcześniejszego modułu.

 

Mój config wygląda tak i wszystko działa.

return array
    (
    'default' => array
        (
        'type' => 'mssql',
        'connection' => array(
            'dsn' => 'sqlsrv:Server=Serwer;Database=Baza_danych',
            'username' => 'username',
            'password' => 'password',
            'persistent' => FALSE,
            'table_prefix' => '',
            'charset' => 'utf8',
            'caching' => !debug,
            'caching' => FALSE,
            'profiling' => TRUE
        ),
        'identifier' => '"'
    ));

Nie zapomnijcie o pozycji 'identifier' => '"', która w moim przypadku rozwiązała pojawiający się problem.

 

Bez problemu mogę korzystać z ORM.

 

Dzięki za zainteresowanie.

 

 






Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych