Domanda

Non vedo che cosa non va qui, ma potrei semplicemente fraintendere la sintassi. Sto cercando di eliminare un " utente " registra dal mio "utente" tabella di mnesia che ha il nome di "quotazione" (ce ne sono multipli). Ecco cosa faccio:

Delete=#user{first_name = "ryan", _ = '_'},
mnesia:dirty_delete_object(Delete)

Ecco la mia definizione di record:

-record(user, {id,
               username,
               password,
               email,
               first_name,
               last_name,
               last_login, % Date/time user last logged in
               reg_date}). % Date/time user registered the account

Ed ecco l'eccezione che sto ricevendo:

** exception exit: {aborted,
                       {bad_type,user,
                           {user,'_','_','_','_',"ryan",'_','_','_'}}}
     in function  mnesia:abort/1
     in call from users:register/1

Sembra una partita perfetta. Cosa potrebbe causare questo problema?

È stato utile?

Soluzione

mnesia: delete_object / 1 e / 3 vengono utilizzati per eliminare dati dalla tabella. Non elimina più record in base a specifica partita . È solo una versione più precisa di mnesia: delete / * - ti dà un modo per eliminare i record specifici dalla tabella bag .

Per eliminare più record corrispondenti alla specifica (ad es. con name = " ryan " ) utilizzare il seguente codice:

Delete=#user{first_name = "ryan", _ = '_'},
List = mnesia:dirty_match_object(Delete)
lists:foreach(fun(X) ->
                      mnesia:dirty_delete_object(X)
              end, List).

o è la sua versione transazionale:

Delete=#user{first_name = "ryan", _ = '_'},
Fun = fun() ->
              List = mnesia:match_object(Delete)
              lists:foreach(fun(X) ->
                                    mnesia:delete_object(X)
                            end, List)
      end,
mnesia:transaction(Fun).
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top