#Rocket ## 事象 ``` Error: Rusqlite error: Invalid parameter name: :route_id ``` コード ```rust pub fn select_by_route_id( conn: &mut Connection, route_id: &RouteId, ) -> serde_rusqlite::Result<Vec<Trip>> { let mut stmt = conn.prepare("SELECT * FROM trips WHERE route_id = ':route_id'")?; let result = from_rows::<Trip>(stmt.query_named(named_params! {":route_id": route_id})?).collect(); result } ``` ## 原因 [[Prepared statement]]のシングルクーテーションが余計だった。具体的には` = ':route_id'`の部分。 ## 解決方法 シングルクーテーションを削除する。 ```diff - let mut stmt = conn.prepare("SELECT * FROM trips WHERE route_id = ':route_id'")?; + let mut stmt = conn.prepare("SELECT * FROM trips WHERE route_id = :route_id")?; ```