2017-09-03 55 views
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) 
+1

何处以及如何定义“语言”类型? – Sibi

+0

@Sibi Language是Language.hs中由我自己定义的数据类型,用于表示用户可以在其个人资料中选择的各种语言。它被导入到Model.hs中作为Import.Language。 我其实并没有想过在错误语言和我的数据类型之间的联系,我只是认为它是包的一部分。我想我应该给我的数据类型少通用的名称,以便他们突出一点XD –

回答

2

该错误表明它无法找到总和类型相关的持久实例。你必须做两件事来解决它:

=>请务必为您的总和类型派生ShowRead实例。例如:

data Language = JS | Haskell deriving (Eq, Show, Read, Ord) 

=>导出持久相关实例使用模板哈斯克尔它:

derivePersistField "Language" 

你必须为你使用它为模型中的所有的总和类型做到这一点。

相关问题