Closed sxjeru closed 2 years ago
mysql使用 @nullqwertyuiop
sqlite为bug,之后会修复
稍等
暴露了我工作环境不是最新 commit 的事实了(
感谢回应,sqlite 已可用。
mysql 更新报错:
2022-01-25 12:12:55.819 | INFO | sagiri_bot.core.app_core:config_check:221 - Configuration check completed
2022-01-25 12:12:55.824 | INFO | graia.ariadne.app:daemon:1321 - daemon: adapter started
2022-01-25 12:12:55.845 | ERROR | sagiri_bot.core.app_core:bot_launch_init:189 - Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 1802, in _execute_context
self.dialect.do_execute(
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/default.py", line 732, in do_execute
cursor.execute(statement, parameters)
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/dialects/mysql/aiomysql.py", line 97, in execute
return self.await_(self._execute_async(operation, parameters))
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/util/_concurrency_py3k.py", line 76, in await_only
return current.driver.switch(awaitable)
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/util/_concurrency_py3k.py", line 129, in greenlet_spawn
value = await result
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/dialects/mysql/aiomysql.py", line 109, in _execute_async
result = await self._cursor.execute(operation, parameters)
File "/usr/local/lib/python3.8/dist-packages/aiomysql/cursors.py", line 239, in execute
await self._query(query)
File "/usr/local/lib/python3.8/dist-packages/aiomysql/cursors.py", line 457, in _query
await conn.query(q)
File "/usr/local/lib/python3.8/dist-packages/aiomysql/connection.py", line 428, in query
await self._read_query_result(unbuffered=unbuffered)
File "/usr/local/lib/python3.8/dist-packages/aiomysql/connection.py", line 620, in _read_query_result
await result.read()
File "/usr/local/lib/python3.8/dist-packages/aiomysql/connection.py", line 1103, in read
first_packet = await self.connection._read_packet()
File "/usr/local/lib/python3.8/dist-packages/aiomysql/connection.py", line 591, in _read_packet
packet.check_error()
File "/usr/local/lib/python3.8/dist-packages/pymysql/protocol.py", line 220, in check_error
err.raise_mysql_exception(self._data)
File "/usr/local/lib/python3.8/dist-packages/pymysql/err.py", line 109, in raise_mysql_exception
raise errorclass(errno, errval)
pymysql.err.InternalError: (1054, "Unknown column 'chat_record.persistent_string' in 'field list'")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/root/sagiri-bot-3.0.1/sagiri_bot/core/app_core.py", line 144, in bot_launch_init
if not await orm.inited():
File "/root/sagiri-bot-3.0.1/sagiri_bot/orm/async_orm.py", line 134, in inited
await self.fetchone(select(table))
File "/root/sagiri-bot-3.0.1/sagiri_bot/orm/async_orm.py", line 59, in fetchone
result = await self.execute(sql)
File "/root/sagiri-bot-3.0.1/sagiri_bot/orm/async_orm.py", line 52, in execute
raise e
File "/root/sagiri-bot-3.0.1/sagiri_bot/orm/async_orm.py", line 46, in execute
result = await session.execute(sql, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/ext/asyncio/session.py", line 211, in execute
return await greenlet_spawn(
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/util/_concurrency_py3k.py", line 134, in greenlet_spawn
result = context.throw(*sys.exc_info())
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/orm/session.py", line 1692, in execute
result = conn._execute_20(statement, params or {}, execution_options)
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 1614, in _execute_20
return meth(self, args_10style, kwargs_10style, execution_options)
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/sql/elements.py", line 325, in _execute_on_connection
return connection._execute_clauseelement(
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 1481, in _execute_clauseelement
ret = self._execute_context(
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 1845, in _execute_context
self._handle_dbapi_exception(
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 2026, in _handle_dbapi_exception
util.raise_(
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/util/compat.py", line 207, in raise_
raise exception
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 1802, in _execute_context
self.dialect.do_execute(
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/default.py", line 732, in do_execute
cursor.execute(statement, parameters)
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/dialects/mysql/aiomysql.py", line 97, in execute
return self.await_(self._execute_async(operation, parameters))
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/util/_concurrency_py3k.py", line 76, in await_only
return current.driver.switch(awaitable)
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/util/_concurrency_py3k.py", line 129, in greenlet_spawn
value = await result
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/dialects/mysql/aiomysql.py", line 109, in _execute_async
result = await self._cursor.execute(operation, parameters)
File "/usr/local/lib/python3.8/dist-packages/aiomysql/cursors.py", line 239, in execute
await self._query(query)
File "/usr/local/lib/python3.8/dist-packages/aiomysql/cursors.py", line 457, in _query
await conn.query(q)
File "/usr/local/lib/python3.8/dist-packages/aiomysql/connection.py", line 428, in query
await self._read_query_result(unbuffered=unbuffered)
File "/usr/local/lib/python3.8/dist-packages/aiomysql/connection.py", line 620, in _read_query_result
await result.read()
File "/usr/local/lib/python3.8/dist-packages/aiomysql/connection.py", line 1103, in read
first_packet = await self.connection._read_packet()
File "/usr/local/lib/python3.8/dist-packages/aiomysql/connection.py", line 591, in _read_packet
packet.check_error()
File "/usr/local/lib/python3.8/dist-packages/pymysql/protocol.py", line 220, in check_error
err.raise_mysql_exception(self._data)
File "/usr/local/lib/python3.8/dist-packages/pymysql/err.py", line 109, in raise_mysql_exception
raise errorclass(errno, errval)
sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1054, "Unknown column 'chat_record.persistent_string' in 'field list'")
[SQL: SELECT chat_record.id, chat_record.time, chat_record.group_id, chat_record.member_id, chat_record.persistent_string, chat_record.seg
FROM chat_record]
(Background on this error at: https://sqlalche.me/e/14/2j85)
这个问题我也有遇到,不太确定用alembic咋整(
手动把表 chat_record
的列 content
改成 persistent_string
可以搞定
用了下述命令,随后获得新的报错。
alter table chat_record change content persistent_string varchar(4000);
alter table setting change anti_flashimage anti_flash_image tinyint(1);
数据库里确实没有名为lolicon_data
的表,难道说要手动添加这些字段吗?…
2022-01-25 13:08:42.174 | INFO | sagiri_bot.core.app_core:config_check:221 - Configuration check completed
2022-01-25 13:08:46.447 | ERROR | sagiri_bot.core.app_core:bot_launch_init:189 - Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 1802, in _execute_context
self.dialect.do_execute(
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/default.py", line 732, in do_execute
cursor.execute(statement, parameters)
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/dialects/mysql/aiomysql.py", line 97, in execute
return self.await_(self._execute_async(operation, parameters))
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/util/_concurrency_py3k.py", line 76, in await_only
return current.driver.switch(awaitable)
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/util/_concurrency_py3k.py", line 129, in greenlet_spawn
value = await result
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/dialects/mysql/aiomysql.py", line 109, in _execute_async
result = await self._cursor.execute(operation, parameters)
File "/usr/local/lib/python3.8/dist-packages/aiomysql/cursors.py", line 239, in execute
await self._query(query)
File "/usr/local/lib/python3.8/dist-packages/aiomysql/cursors.py", line 457, in _query
await conn.query(q)
File "/usr/local/lib/python3.8/dist-packages/aiomysql/connection.py", line 428, in query
await self._read_query_result(unbuffered=unbuffered)
File "/usr/local/lib/python3.8/dist-packages/aiomysql/connection.py", line 620, in _read_query_result
await result.read()
File "/usr/local/lib/python3.8/dist-packages/aiomysql/connection.py", line 1103, in read
first_packet = await self.connection._read_packet()
File "/usr/local/lib/python3.8/dist-packages/aiomysql/connection.py", line 591, in _read_packet
packet.check_error()
File "/usr/local/lib/python3.8/dist-packages/pymysql/protocol.py", line 220, in check_error
err.raise_mysql_exception(self._data)
File "/usr/local/lib/python3.8/dist-packages/pymysql/err.py", line 109, in raise_mysql_exception
raise errorclass(errno, errval)
pymysql.err.ProgrammingError: (1146, "Table 'sagiri.lolicon_data' doesn't exist")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/root/sagiri-bot-3.0.1/sagiri_bot/core/app_core.py", line 144, in bot_launch_init
if not await orm.inited():
File "/root/sagiri-bot-3.0.1/sagiri_bot/orm/async_orm.py", line 134, in inited
await self.fetchone(select(table))
File "/root/sagiri-bot-3.0.1/sagiri_bot/orm/async_orm.py", line 59, in fetchone
result = await self.execute(sql)
File "/root/sagiri-bot-3.0.1/sagiri_bot/orm/async_orm.py", line 52, in execute
raise e
File "/root/sagiri-bot-3.0.1/sagiri_bot/orm/async_orm.py", line 46, in execute
result = await session.execute(sql, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/ext/asyncio/session.py", line 211, in execute
return await greenlet_spawn(
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/util/_concurrency_py3k.py", line 134, in greenlet_spawn
result = context.throw(*sys.exc_info())
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/orm/session.py", line 1692, in execute
result = conn._execute_20(statement, params or {}, execution_options)
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 1614, in _execute_20
return meth(self, args_10style, kwargs_10style, execution_options)
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/sql/elements.py", line 325, in _execute_on_connection
return connection._execute_clauseelement(
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 1481, in _execute_clauseelement
ret = self._execute_context(
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 1845, in _execute_context
self._handle_dbapi_exception(
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 2026, in _handle_dbapi_exception
util.raise_(
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/util/compat.py", line 207, in raise_
raise exception
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/base.py", line 1802, in _execute_context
self.dialect.do_execute(
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/engine/default.py", line 732, in do_execute
cursor.execute(statement, parameters)
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/dialects/mysql/aiomysql.py", line 97, in execute
return self.await_(self._execute_async(operation, parameters))
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/util/_concurrency_py3k.py", line 76, in await_only
return current.driver.switch(awaitable)
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/util/_concurrency_py3k.py", line 129, in greenlet_spawn
value = await result
File "/usr/local/lib/python3.8/dist-packages/sqlalchemy/dialects/mysql/aiomysql.py", line 109, in _execute_async
result = await self._cursor.execute(operation, parameters)
File "/usr/local/lib/python3.8/dist-packages/aiomysql/cursors.py", line 239, in execute
await self._query(query)
File "/usr/local/lib/python3.8/dist-packages/aiomysql/cursors.py", line 457, in _query
await conn.query(q)
File "/usr/local/lib/python3.8/dist-packages/aiomysql/connection.py", line 428, in query
await self._read_query_result(unbuffered=unbuffered)
File "/usr/local/lib/python3.8/dist-packages/aiomysql/connection.py", line 620, in _read_query_result
await result.read()
File "/usr/local/lib/python3.8/dist-packages/aiomysql/connection.py", line 1103, in read
first_packet = await self.connection._read_packet()
File "/usr/local/lib/python3.8/dist-packages/aiomysql/connection.py", line 591, in _read_packet
packet.check_error()
File "/usr/local/lib/python3.8/dist-packages/pymysql/protocol.py", line 220, in check_error
err.raise_mysql_exception(self._data)
File "/usr/local/lib/python3.8/dist-packages/pymysql/err.py", line 109, in raise_mysql_exception
raise errorclass(errno, errval)
sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError) (1146, "Table 'sagiri.lolicon_data' doesn't exist")
[SQL: SELECT lolicon_data.pid, lolicon_data.p, lolicon_data.uid, lolicon_data.title, lolicon_data.author, lolicon_data.r18, lolicon_data.width, lolicon_data.height, lolicon_data.tags, lolicon_data.ext, lolicon_data.upload_date, lolicon_data.original_url
FROM lolicon_data]
(Background on this error at: https://sqlalche.me/e/14/f405)
?这 不应该啊 我这里也没碰到过这个问题(
手动添加缺失数据表后,可以正常启动。暂不知是否有其他bug。 相关文件:https://github.com/SAGIRI-kawaii/sagiri-bot/blob/Ariadne/sagiri_bot/orm/async_orm.py
手动添加lolicon_data
数据表的命令:
create table lolicon_data(
pid BIGINT NOT NULL,
p INTEGER NOT NULL,
uid BIGINT NOT NULL,
title VARCHAR(200) NOT NULL,
author VARCHAR(200) NOT NULL,
r18 BOOLEAN NOT NULL,
width INTEGER NOT NULL,
height INTEGER NOT NULL,
tags VARCHAR(1000) NOT NULL,
ext VARCHAR(20) NOT NULL,
upload_date DATETIME NOT NULL,
original_url VARCHAR(200) NOT NULL,
PRIMARY KEY (pid,p));
最后想问一下,该Bot框架对各群组的配置是存在哪个文件的?是否可以继承。 配置指这些:https://github.com/SAGIRI-kawaii/sagiri-bot/blob/Ariadne/docs/manage.md
表 setting
环境信息
系统版本: Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-91-generic x86_64) 源码版本: 937a64e 其他信息: Python 3.8.10 mirai-console 2.9.1 mirai-api-http 2.4.0
问题描述 使用原来的 mysql 数据库启动时报下述错误:
换成使用 SQLite 后出现不同报错:
希望能优先用 mysql,因为之前的数据全存在 mysql 里。