long2ice / meilisync

Realtime sync data from MySQL/PostgreSQL/MongoDB to Meilisearch
https://github.com/long2ice/meilisync
Apache License 2.0
287 stars 43 forks source link

TypeError: 'async for' requires an object with __aiter__ method, got list #94

Open TSXXY opened 7 months ago

TSXXY commented 7 months ago

meilisync-1 | │ /meilisync/meilisync/meili.py:33 in add_full_data │ meilisync-1 | │ │ meilisync-1 | │ 30 │ async def add_full_data(self, sync: Sync, data: AsyncGenerator): │ meilisync-1 | │ 31 │ │ tasks = [] │ meilisync-1 | │ 32 │ │ count = 0 │ meilisync-1 | │ ❱ 33 │ │ async for items in data: │ meilisync-1 | │ 34 │ │ │ count += len(items) │ meilisync-1 | │ 35 │ │ │ events = [Event(type=EventType.create, data=item) for item │ meilisync-1 | │ 36 │ │ │ task = await self.handle_events_by_type(sync, events, Even │ meilisync-1 | │ │ meilisync-1 | │ ╭───────────────────────────────── locals ─────────────────────────────────╮ │ meilisync-1 | │ │ count = 0 │ │ meilisync-1 | │ │ data = [ │ │ meilisync-1 | │ │ │ { │ │ meilisync-1 | │ │ │ │ 'anime_id': 1, │ │ meilisync-1 | │ │ │ │ 'name': '王者天下 第五季', │ │ meilisync-1 | │ │ │ │ 'play_count': 0, │ │ meilisync-1 | │ │ │ │ 'danmaku_count': 0, │ │ meilisync-1 | │ │ │ │ 'like_count': 0, │ │ meilisync-1 | │ │ │ │ 'create_by': 'admin', │ │ meilisync-1 | │ │ │ │ 'update_by': None, │ │ meilisync-1 | │ │ │ │ 'create_time': datetime.datetime(2024, 4, 1, 18, 22, │ │ meilisync-1 | │ │ 15), │ │ meilisync-1 | │ │ │ │ 'update_time': None, │ │ meilisync-1 | │ │ │ │ 'is_deleted': 0, │ │ meilisync-1 | │ │ │ │ ... +7 │ │ meilisync-1 | │ │ │ }, │ │ meilisync-1 | │ │ │ { │ │ meilisync-1 | │ │ │ │ 'anime_id': 2, │ │ meilisync-1 | │ │ │ │ 'name': '少女与战车 最终章', │ │ meilisync-1 | │ │ │ │ 'play_count': 0, │ │ meilisync-1 | │ │ │ │ 'danmaku_count': 0, │ │ meilisync-1 | │ │ │ │ 'like_count': 0, │ │ meilisync-1 | │ │ │ │ 'create_by': 'admin', │ │ meilisync-1 | │ │ │ │ 'update_by': None, │ │ meilisync-1 | │ │ │ │ 'create_time': datetime.datetime(2024, 4, 1, 18, 22, │ │ meilisync-1 | │ │ 15), │ │ meilisync-1 | │ │ │ │ 'update_time': None, │ │ meilisync-1 | │ │ │ │ 'is_deleted': 0, │ │ meilisync-1 | │ │ │ │ ... +7 │ │ meilisync-1 | │ │ │ }, │ │ meilisync-1 | │ │ │ { │ │ meilisync-1 | │ │ │ │ 'anime_id': 3, │ │ meilisync-1 | │ │ │ │ 'name': │ │ meilisync-1 | │ │ '被称为废物的原英雄,被家里流放后随心所欲地活下去', │ │ meilisync-1 | │ │ │ │ 'play_count': 0, │ │ meilisync-1 | │ │ │ │ 'danmaku_count': 0, │ │ meilisync-1 | │ │ │ │ 'like_count': 0, │ │ meilisync-1 | │ │ │ │ 'create_by': 'admin', │ │ meilisync-1 | │ │ │ │ 'update_by': None, │ │ meilisync-1 | │ │ │ │ 'create_time': datetime.datetime(2024, 4, 1, 18, 22, │ │ meilisync-1 | │ │ 16), │ │ meilisync-1 | │ │ │ │ 'update_time': None, │ │ meilisync-1 | │ │ │ │ 'is_deleted': 0, │ │ meilisync-1 | │ │ │ │ ... +7 │ │ meilisync-1 | │ │ │ }, │ │ meilisync-1 | │ │ │ { │ │ meilisync-1 | │ │ │ │ 'anime_id': 4, │ │ meilisync-1 | │ │ │ │ 'name': '单间、光照尚好、附带天使。', │ │ meilisync-1 | │ │ │ │ 'play_count': 0, │ │ meilisync-1 | │ │ │ │ 'danmaku_count': 0, │ │ meilisync-1 | │ │ │ │ 'like_count': 0, │ │ meilisync-1 | │ │ │ │ 'create_by': 'admin', │ │ meilisync-1 | │ │ │ │ 'update_by': None, │ │ meilisync-1 | │ │ │ │ 'create_time': datetime.datetime(2024, 4, 1, 18, 22, │ │ meilisync-1 | │ │ 16), │ │ meilisync-1 | │ │ │ │ 'update_time': None, │ │ meilisync-1 | │ │ │ │ 'is_deleted': 0, │ │ meilisync-1 | │ │ │ │ ... +7 │ │ meilisync-1 | │ │ │ }, │ │ meilisync-1 | │ │ │ { │ │ meilisync-1 | │ │ │ │ 'anime_id': 5, │ │ meilisync-1 | │ │ │ │ 'name': '关于我转生变成史莱姆这档事 第三季', │ │ meilisync-1 | │ │ │ │ 'play_count': 0, │ │ meilisync-1 | │ │ │ │ 'danmaku_count': 0, │ │ meilisync-1 | │ │ │ │ 'like_count': 0, │ │ meilisync-1 | │ │ │ │ 'create_by': 'admin', │ │ meilisync-1 | │ │ │ │ 'update_by': None, │ │ meilisync-1 | │ │ │ │ 'create_time': datetime.datetime(2024, 4, 1, 18, 22, │ │ meilisync-1 | │ │ 16), │ │ meilisync-1 | │ │ │ │ 'update_time': None, │ │ meilisync-1 | │ │ │ │ 'is_deleted': 0, │ │ meilisync-1 | │ │ │ │ ... +7 │ │ meilisync-1 | │ │ │ }, │ │ meilisync-1 | │ │ │ { │ │ meilisync-1 | │ │ │ │ 'anime_id': 6, │ │ meilisync-1 | │ │ │ │ 'name': 'Wonderful 光之美少女!', │ │ meilisync-1 | │ │ │ │ 'play_count': 0, │ │ meilisync-1 | │ │ │ │ 'danmaku_count': 0, │ │ meilisync-1 | │ │ │ │ 'like_count': 0, │ │ meilisync-1 | │ │ │ │ 'create_by': 'admin', │ │ meilisync-1 | │ │ │ │ 'update_by': None, │ │ meilisync-1 | │ │ │ │ 'create_time': datetime.datetime(2024, 4, 1, 18, 22, │ │ meilisync-1 | │ │ 16), │ │ meilisync-1 | │ │ │ │ 'update_time': None, │ │ meilisync-1 | │ │ │ │ 'is_deleted': 0, │ │ meilisync-1 | │ │ │ │ ... +7 │ │ meilisync-1 | │ │ │ }, │ │ meilisync-1 | │ │ │ { │ │ meilisync-1 | │ │ │ │ 'anime_id': 7, │ │ meilisync-1 | │ │ │ │ 'name': '我心里危险的东西 第二季', │ │ meilisync-1 | │ │ │ │ 'play_count': 0, │ │ meilisync-1 | │ │ │ │ 'danmaku_count': 0, │ │ meilisync-1 | │ │ │ │ 'like_count': 0, │ │ meilisync-1 | │ │ │ │ 'create_by': 'admin', │ │ meilisync-1 | │ │ │ │ 'update_by': None, │ │ meilisync-1 | │ │ │ │ 'create_time': datetime.datetime(2024, 4, 1, 18, 22, │ │ meilisync-1 | │ │ 17), │ │ meilisync-1 | │ │ │ │ 'update_time': None, │ │ meilisync-1 | │ │ │ │ 'is_deleted': 0, │ │ meilisync-1 | │ │ │ │ ... +7 │ │ meilisync-1 | │ │ │ }, │ │ meilisync-1 | │ │ │ { │ │ meilisync-1 | │ │ │ │ 'anime_id': 9, │ │ meilisync-1 | │ │ │ │ 'name': '假面骑士歌查德', │ │ meilisync-1 | │ │ │ │ 'play_count': 0, │ │ meilisync-1 | │ │ │ │ 'danmaku_count': 0, │ │ meilisync-1 | │ │ │ │ 'like_count': 0, │ │ meilisync-1 | │ │ │ │ 'create_by': 'admin', │ │ meilisync-1 | │ │ │ │ 'update_by': None, │ │ meilisync-1 | │ │ │ │ 'create_time': datetime.datetime(2024, 4, 1, 18, 22, │ │ meilisync-1 | │ │ 17), │ │ meilisync-1 | │ │ │ │ 'update_time': None, │ │ meilisync-1 | │ │ │ │ 'is_deleted': 0, │ │ meilisync-1 | │ │ │ │ ... +7 │ │ meilisync-1 | │ │ │ }, │ │ meilisync-1 | │ │ │ { │ │ meilisync-1 | │ │ │ │ 'anime_id': 10, │ │ meilisync-1 | │ │ │ │ 'name': '宝可梦 地平线 莉可与罗伊踏上旅途', │ │ meilisync-1 | │ │ │ │ 'play_count': 0, │ │ meilisync-1 | │ │ │ │ 'danmaku_count': 0, │ │ meilisync-1 | │ │ │ │ 'like_count': 0, │ │ meilisync-1 | │ │ │ │ 'create_by': 'admin', │ │ meilisync-1 | │ │ │ │ 'update_by': None, │ │ meilisync-1 | │ │ │ │ 'create_time': datetime.datetime(2024, 4, 1, 18, 22, │ │ meilisync-1 | │ │ 17), │ │ meilisync-1 | │ │ │ │ 'update_time': None, │ │ meilisync-1 | │ │ │ │ 'is_deleted': 0, │ │ meilisync-1 | │ │ │ │ ... +7 │ │ meilisync-1 | │ │ │ }, │ │ meilisync-1 | │ │ │ { │ │ meilisync-1 | │ │ │ │ 'anime_id': 11, │ │ meilisync-1 | │ │ │ │ 'name': '香格里拉·弗陇提亚~屎作猎人向神作发起挑战~', │ │ meilisync-1 | │ │ │ │ 'play_count': 0, │ │ meilisync-1 | │ │ │ │ 'danmaku_count': 0, │ │ meilisync-1 | │ │ │ │ 'like_count': 0, │ │ meilisync-1 | │ │ │ │ 'create_by': 'admin', │ │ meilisync-1 | │ │ │ │ 'update_by': None, │ │ meilisync-1 | │ │ │ │ 'create_time': datetime.datetime(2024, 4, 1, 18, 22, │ │ meilisync-1 | │ │ 17), │ │ meilisync-1 | │ │ │ │ 'update_time': None, │ │ meilisync-1 | │ │ │ │ 'is_deleted': 0, │ │ meilisync-1 | │ │ │ │ ... +7 │ │ meilisync-1 | │ │ │ } │ │ meilisync-1 | │ │ ] │ │ meilisync-1 | │ │ self = <meilisync.meili.Meili object at 0x7f9f00d63e60> │ │ meilisync-1 | │ │ sync = Sync( │ │ meilisync-1 | │ │ │ plugins=['meilisync.plugin.Plugin'], │ │ meilisync-1 | │ │ │ table='dmkh_animes', │ │ meilisync-1 | │ │ │ pk='anime_id', │ │ meilisync-1 | │ │ │ full=True, │ │ meilisync-1 | │ │ │ index='animes', │ │ meilisync-1 | │ │ │ fields=None │ │ meilisync-1 | │ │ ) │ │ meilisync-1 | │ │ tasks = [] │ │ meilisync-1 | │ ╰──────────────────────────────────────────────────────────────────────────╯ │ meilisync-1 | ╰──────────────────────────────────────────────────────────────────────────────╯ meilisync-1 | TypeError: 'async for' requires an object with aiter method, got list meilisync-1 exited with code 1

TSXXY commented 7 months ago

这个是什么问题,数据从数据库读到了。但是还是报错。

TSXXY commented 7 months ago

image 当把progress的type改成redis后会变成这样

long2ice commented 7 months ago

MySQL还是Postgres

TSXXY commented 7 months ago

MySQL 还是 Postgres

是使用了阿里云的PolarDB MySQL8.0

chenzhony commented 6 months ago

any progess, I meet same problem

Thanakun commented 5 months ago

i also meet the same problem. I'm using MySQL Database , i switch to the image docker tag to develop. the index on meilisearch has been adding but table has been set on 'NONE' and empty documents in it

image

this is my configuration for config.yml

`debug: true plugins:

gantrol commented 3 months ago

Having same problem for long2ice/meilisync, I fix it by using long2ice/meilisync:dev. So, you may use newer version of it.

Detail list: https://hub.docker.com/r/long2ice/meilisync/tags