Yuego / django-fias

Other
112 stars 70 forks source link

Можете помочь - уже мозг сломал #67

Closed Skorpyon closed 7 years ago

Skorpyon commented 7 years ago

Падает поиск в модуле Decimal:

    Exception Type: SphinxQLDriverException
    Exception Value:    Cannot convert b'1000' to Decimal
.../python3.4/site-packages/sphinxit/core/processor.py in ask           
def ask(self, subqueries=None):
        query_batch = [(self.lex(), getattr(self, '_name', 'result'))]
        if subqueries is not None:
            query_batch.extend([
                (s_inst.lex(), getattr(s_inst, '_name', 'result_%s' % id(s_inst)))
                for s_inst in subqueries
                ])
            return self.connector.execute(query_batch) # <= Исключение здесь
Local vars
self:   <sphinxit.core.processor.Search object at 0x7f60b3582eb8>
query_batch:    [("SELECT * FROM default_addrobj WHERE MATCH('белго\\*') AND aolevel IN "
  '(0,1,4,6) ORDER BY aolevel ASC, item_weight DESC LIMIT 0,35 OPTION '
  'field_weights=(formalname=100, fullname=80)',
  'result')]
subqueries: None

.../python3.4/site-packages/sphinxit/core/connector.py in execute
except Exception as e:
            if oursql and type(e).__name__ == 'ProgrammingError':
                errno, msg, extra = e
                if errno is not None:
                    raise SphinxQLDriverException(msg)
            else:
                    raise SphinxQLDriverException(e)  # <= Исключение здесь
        finally:
            cursor.close()
            self.__connections_pool.appendleft(connection)

Local vars
self: <sphinxit.core.connector.SphinxConnector object at 0x7f60b3582470>
total_results: {}
sxql_query: [("SELECT * FROM default_addrobj WHERE MATCH('белго\\*') AND aolevel IN "
  '(0,1,4,6) ORDER BY aolevel ASC, item_weight DESC LIMIT 0,35 OPTION '
  'field_weights=(formalname=100, fullname=80)',
  'result')]
connection: <oursql.Connection object at 0x7f60b3522208>
cursor: <oursql.DictCursor object at 0x7f60b4055f48>
Yuego commented 7 years ago

Sphinxit уже два года как не поддерживается. Это вполне может быть баг самого sphinxit. Может, есть смысл отказаться от неподдерживаемого модуля?

А по проблеме. Попробуйте выполнить этот же запрос через клиент mysql:

mysql -h localhost --port 9306

\> SELECT * FROM default_addrobj WHERE MATCH('белго*') AND aolevel IN  (0,1,4,6) ORDER BY aolevel ASC, item_weight DESC LIMIT 0,35 OPTION field_weights=(formalname=100, fullname=80);

и найти, в какой колонке и какой строке присутствует проблемное значение 1000. Нужно понять, что вообще там происходит.

У меня вот такой вывод получился:

+--------+--------------------------------------+---------+-----------------------------------------------------------------------------------------------------------------+-------------+
| id     | aoguid                               | aolevel | fullname                                                                                                        | item_weight |
+--------+--------------------------------------+---------+-----------------------------------------------------------------------------------------------------------------+-------------+
|     21 | 639efe9d-3fc8-4438-8e70-ec4f2321f2a7 |       1 | обл Белгородская                                                                                                |          64 |
| 256335 | 19c9f6de-45cd-4c76-9839-abd571698ced |       4 | обл Белгородская, р-н Яковлевский, г Строитель                                                                  |         128 |
| 151578 | f565b329-4041-4fd2-aa0a-debd5f7c3857 |       4 | обл Белгородская, р-н Новооскольский, г Новый Оскол                                                             |         128 |
| 366662 | eaaf5809-d1e2-4d93-8f05-85dd598cc403 |       4 | обл Белгородская, р-н Красногвардейский, г Бирюч                                                                |         128 |
|   4652 | 98b1ec30-6107-4f99-ae3a-9d82492f30a1 |       4 | обл Белгородская, г Губкин                                                                                      |         128 |
|   4648 | dc80ddf0-b1ac-4344-98e8-fcfa5295a0a3 |       4 | обл Белгородская, г Шебекино                                                                                    |         128 |
| 376557 | 51c31ef5-10b3-4011-8e1c-7e7d452afd1b |       4 | обл Белгородская, р-н Грайворонский, г Грайворон                                                                |         128 |
| 228213 | fe7eea4a-875a-4235-aa61-81c2a37a0440 |       4 | обл Белгородская, р-н Валуйский, г Валуйки                                                                      |         128 |
| 217881 | 76fecead-fc02-459a-bce4-848698e645fe |       4 | обл Белгородская, р-н Корочанский, г Короча                                                                     |         128 |
|   4632 | 02e9c019-ab4d-4fa0-928e-d6c0a41dc256 |       4 | обл Белгородская, г Белгород                                                                                    |         128 |
|   4633 | 9f5e86b1-b893-43dc-9dd4-ac66573b17d1 |       4 | обл Белгородская, г Старый Оскол                                                                                |         128 |
| 192427 | 94969f84-fff4-4ddf-9677-b912b4b2aa3e |       4 | обл Белгородская, р-н Алексеевский, г Алексеевка                                                                |         128 |
| 385478 | b72ef015-d3db-420d-b55a-6a6d136b6f03 |       6 | обл Белгородская, р-н Белгородский, с Веселая Лопань                                                            |         120 |
| 385471 | 21b538ea-4134-45fd-a9ba-88eda137bb01 |       6 | обл Белгородская, р-н Белгородский, с Ближнее                                                                   |         120 |
| 385479 | ffadb6de-edb1-41dd-acd3-0e29c1c34e3a |       6 | обл Белгородская, р-н Белгородский, с Долбино                                                                   |         120 |
| 376555 | 2607c47b-9eef-4903-9cc6-a4262d7e44c8 |       6 | обл Белгородская, р-н Грайворонский, п Кировское Отделение                                                      |         120 |
| 347672 | 3fbaf3dc-47a9-4430-aeb7-668f5d6d1aac |       6 | обл Белгородская, р-н Борисовский, с Заречное                                                                   |         120 |
| 376556 | c54dd918-46e5-4b51-91f6-a812d07b8993 |       6 | обл Белгородская, р-н Грайворонский, п Старый Поселок                                                           |         120 |
| 385482 | ed8a5ca5-848b-4375-aaa5-d8aa1a38e481 |       6 | обл Белгородская, р-н Белгородский, с Головино                                                                  |         120 |
| 312003 | eac9d5a8-b489-4835-b712-031923f32e74 |       6 | обл Белгородская, р-н Чернянский, с Ольшанка                                                                    |         120 |
| 311968 | e2b6fdbe-d4b0-4bae-b314-c2f0e9973bf3 |       6 | обл Белгородская, р-н Чернянский, с Ковылено                                                                    |         120 |
| 312004 | f78f62c1-f36e-4945-95c2-9fad5360ce09 |       6 | обл Белгородская, р-н Чернянский, с Захарово                                                                    |         120 |
| 326892 | a0b732fc-2490-406f-8aa4-bb7bb1183b2b |       6 | обл Белгородская, р-н Ровеньский, с Лозовое                                                                     |         120 |
| 347671 | 55c1fb26-3436-4454-9696-65b8427ff891 |       6 | обл Белгородская, р-н Борисовский, с Стригуны                                                                   |         120 |
| 366691 | 42a6c730-d73b-4352-b3df-43d7279e413a |       6 | обл Белгородская, р-н Красногвардейский, с Веселое                                                              |         120 |
| 376554 | 097ae9ea-38cb-4b7a-ab1d-0d7393f20769 |       6 | обл Белгородская, р-н Грайворонский, п Горьковское Отделение                                                    |         120 |
| 376590 | 25780a82-9530-4961-ae9f-9167e2f108af |       6 | обл Белгородская, р-н Грайворонский, с Смородино                                                                |         120 |
| 377907 | c5d9d6db-aaba-4ba4-be43-0998f2f8db73 |       6 | обл Белгородская, р-н Старооскольский, с Каплино                                                                |         120 |
| 377938 | ca4d7697-f43f-4e3c-8e0a-5393bf94925a |       6 | обл Белгородская, р-н Старооскольский, с Шаталовка                                                              |         120 |
| 385475 | 7805129a-3374-48b3-a919-defc31c6f8b2 |       6 | обл Белгородская, р-н Белгородский, с Чайки                                                                     |         120 |
| 256411 | 431bf2c1-de65-49df-8a2f-c52fb5fe8b50 |       6 | обл Белгородская, р-н Яковлевский, с Пушкарное                                                                  |         120 |
| 256359 | 33c5f5be-a77c-4d8d-b516-92dcfcb9eca4 |       6 | обл Белгородская, р-н Яковлевский, с Луханино                                                                   |         120 |
| 256414 | 3e565347-6dfe-4131-930c-2f2070a80694 |       6 | обл Белгородская, р-н Яковлевский, с Терновка                                                                   |         120 |
| 385473 | 3c252f7c-b972-47f2-81f6-aa5170146d6b |       6 | обл Белгородская, р-н Белгородский, с Орловка                                                                   |         120 |
| 255305 | 90426c6a-2893-4491-a0cc-d4828c4675ff |       6 | обл Белгородская, р-н Ивнянский, с Алисовка                                                                     |         120 |
+--------+--------------------------------------+---------+-----------------------------------------------------------------------------------------------------------------+-------------+
35 rows in set (0.01 sec)

Ничего похожего на ваше значение нет. Но тут у меня база очень старая. Выложите свой вариант - может, что прояснится.

Skorpyon commented 7 years ago

У меня получилось то же самое, только id другие, к сожалению разобраться не получилось пока.

Насколько я понял Вы полностью переписали коннекторы, только я так и не разобрался, чем теперь осуществляется соединение, штатными коннекторами Django?

Я пока не могу сделать апгрейд на новую версию, т.к. django-select2 у меня еще 4 версии, а они удалили fields и ввели вместо них widgets, а у меня эти fields по всему приложению. В итоге после обновления все посыпалось, пришлось откатываться.

Насколько я понял у меня проблема в oursql, я сменил ее пока временно на MySQL-python, все работает.

Спасибо за Вашу помощь.

Yuego commented 7 years ago

Да, сейчас используется штатный бэкенд mysql из Django.