gpt4 book ai didi

sqlite - Haskell-尝试查询刚刚创建的表时出现持久错误

转载 作者:行者123 更新时间:2023-12-03 18:54:46 24 4
gpt4 key购买 nike

我正在尝试使用持久性查询sqlite表,但是在显示创建表的消息后立即收到一条消息,指出该表不存在。

Migrating: CREATE TABLE "Post"("id" INTEGER PRIMARY KEY,"content" VARCHAR NOT NULL)
user error (SQLite3 returned ErrorError while attempting to perform prepare "SELECT \"content\" FROM \"Post\" WHERE \"id\"=?": no such table: Post)


这是我正在运行的代码(用于 scotty网络应用程序,因此此处包含一些具体的东西)

runDb $ runMigration migrateAll --to create the table
liftIO $ runDb $ insert $ Post $ decodeUtf8 $ toStrict image --to attempt to insert the data, this is what fails


这是我对这些功能的定义:

share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistUpperCase|
Post
content Text
|]

runDb :: SqlPersist (ResourceT IO) a -> IO a
runDb query = runResourceT . withSqliteConn ":memory:" . runSqlConn $ query


似乎声称要创建表,但实际上并未这样做。

最佳答案

您正在内存中创建表,因此,每次运行runDb后,数据都会被丢弃。

有两种可能的解决方案:


使用文件存储数据(即-将“:memory:”更改为“ filename.sqlite3”)。数据还将在每次运行时保持不变。
运行代码以在单个runDb中创建和填充数据。该代码将起作用,但每次运行都会丢失数据。

关于sqlite - Haskell-尝试查询刚刚创建的表时出现持久错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20817682/

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