1
我不确定这篇文章中包含什么,因为我真的不明白错误信息,所以我刚才包含错误,Model.hs文件和模型。我正在使用MySQL的Yesod脚手架站点。我使用的操作系统是Ubuntu。如果您需要查看任何其他代码,例如数据定义然后只是问。没有Yesod,Persistent和MySQL的实例错误
错误消息:
[ 6 of 20] Compiling Model (src/Model.hs, .stack-work/dist/x86_64-linux/Cabal-1.24.2.0/build/Model.o)
/home/james/ConVoke/convoke-website/src/Model.hs:24:7: error:
• No instance for (persistent-2.7.0:Database.Persist.Sql.Class.PersistFieldSql
Language)
arising from a use of ‘persistent-2.7.0:Database.Persist.Sql.Class.sqlType’
• In the fourth argument of ‘FieldDef’, namely
‘persistent-2.7.0:Database.Persist.Sql.Class.sqlType
(Data.Proxy.Proxy :: Data.Proxy.Proxy Language)’
In the expression:
FieldDef
(HaskellName (packPTH "language"))
(DBName (packPTH "language"))
(FTTypeCon Nothing (packPTH "Language"))
(persistent-2.7.0:Database.Persist.Sql.Class.sqlType
(Data.Proxy.Proxy :: Data.Proxy.Proxy Language))
[]
True
NoReference
In the ‘entityFields’ field of a record
-- While building package website-0.0.0 using:
/home/james/.stack/setup-exe-cache/x86_64-linux/Cabal-simple_mPHDZzAJ_1.24.2.0_ghc-8.0.2 --builddir=.stack-work/dist/x86_64-linux/Cabal-1.24.2.0 build lib:website --ghc-options " -ddump-hi -ddump-to-file"
Model.hs:
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
module Model where
import ClassyPrelude.Yesod
import Database.Persist.Quasi
import Import.Game
import Import.Language
import Import.Profile
-- You can define all of your database entities in the entities file.
-- You can find more information on persistent and how to declare entities
-- at:
-- http://www.yesodweb.com/book/persistent/
share [mkPersist sqlSettings, mkMigrate "migrateAll"]
$(persistFileWith lowerCaseSettings "config/models")
型号:
Player
name Text
username Text
dob Day
language Language
tournaments [TournamentResult]
deriving (Show)
PlatformAccount
player PlayerId
platform Platform
account Text
deriving (Show)
SocialAccount
player PlayerId
site SocialSite
account Text
deriving (Show)
PastTeam
player PlayerId
team TeamId
yearJoined Int
yearLeft Int
deriving (Show)
TournamentResult
player PlayerId
team TeamId
name Text
placing Text
year Int
deriving (Show)
Roster
name Text
game Game
team TeamId
players [PlayerId]
creationDay Day
deriving (Show)
PlayerRole
roster RosterId
player PlayerId
role Role
deriving (Show)
CompetitiveGame
game Game
platform Platform
role Role
availability Availability
playingSince Int
deriving (Show)
Team
name Text
creationDay Day
deriving (Show)
感谢提前:)
编辑:由于所要求的语言。 hs文件定义La语言数据类型:
module Import.Language where
allLanguages :: [Language]
allLanguages = [Afrikanns ..]
data Language = Afrikanns |
Albanian |
Arabic |
Armenian |
Basque |
Bengali |
Bulgarian |
Catalan |
Cambodian |
Chinese_Mandarin |
Croation |
Czech |
Danish |
Dutch |
English |
Estonian |
Fiji |
Finnish |
French |
Georgian |
German |
Greek |
Gujarati |
Hebrew |
Hindi |
Hungarian |
Icelandic |
Indonesian |
Irish |
Italian |
Japanese |
Javanese |
Korean |
Latin |
Latvian |
Lithuanian |
Macedonian |
Malay |
Malayalam |
Maltese |
Maori |
Marathi |
Mongolian |
Nepali |
Norwegian |
Persian |
Polish |
Portuguese |
Punjabi |
Quechua |
Romanian |
Russian |
Samoan |
Serbian |
Slovak |
Slovenian |
Spanish |
Swahili |
Swedish |
Tamil |
Tatar |
Telugu |
Thai |
Tibetan |
Tonga |
Turkish |
Ukranian |
Urdu |
Uzbek |
Vietnamese |
Welsh |
Xhosa
deriving (Enum, Show, Eq)
何处以及如何定义“语言”类型? – Sibi
@Sibi Language是Language.hs中由我自己定义的数据类型,用于表示用户可以在其个人资料中选择的各种语言。它被导入到Model.hs中作为Import.Language。 我其实并没有想过在错误语言和我的数据类型之间的联系,我只是认为它是包的一部分。我想我应该给我的数据类型少通用的名称,以便他们突出一点XD –