使用SeaORM+AsyncGraphQL+Actix时,出现relation 'adverts'不存在错误
问题排查:relation "adverts" does not exist 错误分析与解决
以下是几个直接的排查方向,按优先级检查:
数据库迁移未实际执行
直接连接数据库,用\dt(PostgreSQL)或SHOW TABLES;(MySQL)查看是否真的存在adverts表。确认sea-orm-cli migrate up这类迁移命令是否执行成功,有没有中途报错被忽略。实体表名与数据库实际表名不匹配
检查Advert实体的表名配置:看#[derive(DeriveEntityModel)]宏里的table_name参数,或者EntityNametrait的实现是否正确。比如数据库里建的是单数advert表,但实体里写的是复数adverts,就会触发这个错误。示例代码检查:impl EntityName for Advert { fn table_name() -> &'static str { "adverts" // 这里要和数据库实际表名完全一致 } }连接的数据库实例不对
确认应用的数据库连接配置,是不是连到了另一个没有执行迁移的数据库(比如测试库、临时库),导致目标表不存在。关联关系里的表名写错
检查User和Advert的关联定义,比如has_many宏里是否错误指定了不存在的表名。正确的写法应该引用实体的table_name,而不是硬拼写:has_many!(Advert, Advert::table_name());迁移文件SQL有误
重新核对迁移文件中创建表的语句,有没有表名拼写错误、SQL语法错误,或者因为事务回滚导致表没创建出来。比如误把adverts写成advert,或者建表语句没被正确执行。
内容的提问来源于stack exchange,提问作者dsadad
相关产品推荐
相关产品推荐

