![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Trafiłem dzisiaj na dosyć dziwny przypadek.
Mam takie zapytanie:
Przykładowy wynik: Cytat group_name - Administratorzy group_description - Administratorzy systemu roles - ChangeLogView (Przeglądanie changeloga)|ListOfUsers (Przeglądanie listy użytkowników)|AddUser (Dodawanie użytkownika)|SearchUser (Szukanie użytkownika)|AddUserToGroup (Dodawanie użytkownika do grupy)|AddRoleToGroup (Dodawanie roli do grupy)|DeleteUserFromGroup (Usuwanie użytkownika z grupy)|DeleteRoleFromGroup (Usuwanie roli z grupy)|LogsView (Przeglądanie logów)|EventsView (Przeglądanie zdarzeń)|(...)|AddL Problem w tym, że roles jest obcinane do 1024 znaków. Ucina na AddL a powinno być jeszcze sporo innych ról. To jakieś ograniczenie Mysqla? ![]() Ten post edytował Jarod 5.08.2007, 20:04:23 -------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Tyle ustawiłeś znaków na kolumnę to tyle jest. Spójrz na strukturę tabeli.
-------------------- Zapraszam na mój php blog, tworzenie stron.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Tyle ustawiłeś znaków na kolumnę to tyle jest. Spójrz na strukturę tabeli. Przecież to nie ma znaczenia, bo łącze stringi za pomocą GROUP_CONCAT(). Spójrz jeszcze raz na kwerende. Struktura tabeli roles: Kod mysql> describe roles; +------------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+-------------+------+-----+---------+----------------+ | role_id | int(11) | NO | PRI | NULL | auto_increment | | role_name | varchar(30) | NO | UNI | | | | role_description | varchar(60) | NO | | | | +------------------+-------------+------+-----+---------+----------------+ Wygląda na to jakby wynik zwracany przez funkcję GROUP_CONCAT() był ograniczony do 1024znaków. EDIT: Tak myślałem.. Z manuala: Cytat The result is truncated to the maximum length that is given by the group_concat_max_len system variable, which has a default value of 1024. The value can be set higher, although the maximum effective length of the return value is constrained by the value of max_allowed_packet. The syntax to change the value of group_concat_max_len at runtime is as follows, where val is an unsigned integer: SET [SESSION | GLOBAL] group_concat_max_len = val; Beginning with MySQL 5.0.19, the type returned by GROUP_CONCAT() is always VARCHAR unless group_concat_max_len is greater than 512, in which case, it returns a BLOB. (Previously, it returned a BLOB with group_concat_max_len greater than 512 only if the query included an ORDER BY clause.) Są 2 rozwiązania: 1. Ustawiać za każdym razem (bałbym się stosować global) przy próbie pobrania tych danych SET SESSION group_concat_max_len = nasza_wartość; 2. Wykorzystać tymczasową tabelę Które rozwiązanie jest lepsze (Waszym zdaniem)? Ten post edytował Jarod 5.08.2007, 20:03:53 -------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.06.2025 - 10:26 |