gpt4 book ai didi

mysql - 如何使用 withMySQLConn 使用 persistent-mysql 进行查询?

转载 作者:搜寻专家 更新时间:2023-10-30 20:09:21 26 4
gpt4 key购买 nike

我正在使用 persistent-mysql并尝试找到一种方法来从 SqlPersistM () monad 执行简单的命令。但是我遇到了类型错误。

首先是withMySQLConn defaultConnectInfo,它有以下类型

(MonadLogger m, MonadBaseControl IO m, MonadIO m) =>
(Connection -> m a) -> m a

这里的问题是,如果我尝试在 IO monad 中运行它,我会收到一条错误消息,指出 IO< 没有 MonadLogger 实例.

λ> :t withMySQLConn defaultConnectInfo $
\c -> runSqlPersistM (runMigration migrateAll) c

<interactive>:1:1-13:
No instance for (MonadLogger IO)
arising from a use of ‘withMySQLConn’
In the expression: withMySQLConn defaultConnectInfo
In the expression:
withMySQLConn defaultConnectInfo
$ \ c -> runSqlPersistM (runMigration migrateAll) c

an older version of monad-logger 中似乎有一个, 但是 not anymore .我不确定我是否用错了,或者是否存在潜在问题。我只有一个带有持久 2.1.1.4 设置的小型 cabal 项目,并尝试从 cabal repl 运行迁移。

如果有任何相关性,这是我的整个数据库设置代码

{-# LANGUAGE EmptyDataDecls             #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
module Model where

import Control.Monad.Trans.Control
import Control.Monad.IO.Class
import Control.Monad.Trans.Resource (runResourceT, ResourceT)
import Control.Monad.Logger

import Data.Text (Text)
import Data.Time (UTCTime)
import Database.Persist
import Database.Persist.TH
import Database.Persist.MySQL
import Database.Persist.Sqlite

share [mkPersist sqlSettings, mkMigrate "migrateAll"]
[persistLowerCase|
Receipt
name Text
createdAt UTCTime
|]

我已经尝试使用 persistent-sqlite 并且一切似乎都运行良好(基于书籍教程),但我似乎无法在 MySQL 中运行。

我正在寻找的是一个简单的片段,显示如何使用 persistent-mysql 执行 SqlPersistM a 查询(或等效查询)。

这个问题是后续问题 from a GitHub issue discussion .

最佳答案

你快到了。您只需要使用 monad-logger 中的函数之一来提供 MonadLogger 上下文。您可能想尝试 runStdoutLoggingT

关于mysql - 如何使用 withMySQLConn 使用 persistent-mysql 进行查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28270754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com