Я искал четкий ответ на этот вопрос, но еще не смог найти его - Как включить автоматическое ведение журнала SQL-запросов, выполняемых persistent? Может ли кто-нибудь дать мне небольшую примерную программу для этого?Как включить автоматическое ведение журнала SQL-запросов с помощью Persistent
Ниже приведен пример программы, которая в настоящее время не имеет протоколирования. Как включить запись в него?
share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
Person
name Text
status Text Maybe
deriving Show
|]
main :: IO()
main = runSqlite ":memory:" $ do
runMigration migrateAll
insert (Person "Oliver Charles" Nothing)
insert (Person "Jon Snow" Nothing)
insert (Person "Marky Mark" (Just "helloo helloo"))
noStatusPeople >>= mapM_ (liftIO . print)
where
noStatusPeople =
select $ from $ \person -> do
where_ (person ^. PersonStatus ==. val Nothing)
return (person ^. PersonName)
Я может быть что-то отсутствует. Я попытался ввести код, но он, похоже, не имеет эффекта. Правильно ли следующее? 'главная :: IO()' ' основной = runResourceT $ runStdoutLoggingT $ runSqlite ": память:" $ do' Выход остается только -' Перенастройка: CREATE TABLE "лицо" ("идентификатор" INTEGER PRIMARY KEY , "name" VARCHAR NOT NULL, "status" VARCHAR NULL) ' –
Простите, моя ошибка, runSqlLite уже устанавливает регистрацию (никому), поэтому вам нужно использовать функции нижнего уровня. Я обновил свой ответ. –
Это сработало! Благодаря! Да, я понял, что должен был использовать 'isNothing', это ошибка, которая потребовала времени для отслеживания без регистрации SQL и вызвала этот вопрос :) –