Как переименовать Узел, выполняющий mnesia Базу данных

В вашем create.blade вы используете 'formUrl' => route ('category.store'), этот маршрут вызывает метод "store", верно? Если это так, ему также необходимо передать параметр $ image. Было бы легче определить проблему, если бы мы могли также найти ваш файл веб-маршрутов.

Если route ('category.store') вызывает метод store, у вас есть несколько вариантов.

1 - Если вам не нужен параметр $ image для метода store, вы можете просто удалить его.

2 - Если вам нужно в некоторых случаях, просто сделайте параметр необязательным и проверьте, получен ли он, прежде чем обрабатывать его. Пример: store (Request $ request, $ image = null)

3 - Если этот параметр действительно необходим, вам придется передавать его каждый раз, даже при вызове маршрутов. Пример: маршрут ('category.store', ['image' => $ что-то]). Глядя на ваш код в данный момент в create.blade, у вас нет контента для передачи, поэтому я не думаю, что это вариант.

13
задан max 20 January 2009 в 22:30
поделиться

2 ответа

Я не думаю, что это может быть сделано онлайн на единственном узле (кто-либо?), но возможно сделать через резервное копирование/восстановление в дополнение к выполнению двух узлов и добавлению копий таблицы. В разделе Руководства пользователя Mnesia 6.9.1 Вы найдете некоторый код, который использует mnesia:traverse_backup для изменения имен узла в таблице схемы (Показанный ниже) в mnesia файле резервной копии. Имя модуля, которое необходимо, вероятно, использовать, mnesia_backup.

С этим кодом Вы должны будете:

%% On mypl@machine1
mnesia:backup("/path/to/mnesia.backup").
change_node_name(mnesia_backup, mypl@machine1, mypl@machine2,
                 "/path/to/mnesia.backup", "/path/to/new.mnesia.backup").
%% On mypl@machine2
mnesia:restore("/path/to/new.mnesia.backup", []).

Я не уверен, необходимо ли создать схему сначала на mypl@machine2.

Имя узла изменения кодирует из руководства пользователя:

change_node_name(Mod, From, To, Source, Target) ->
    Switch =
        fun(Node) when Node == From -> To;
           (Node) when Node == To -> throw({error, already_exists});
           (Node) -> Node
        end,
    Convert =
        fun({schema, db_nodes, Nodes}, Acc) ->
                {[{schema, db_nodes, lists:map(Switch,Nodes)}], Acc};
           ({schema, version, Version}, Acc) ->
                {[{schema, version, Version}], Acc};
           ({schema, cookie, Cookie}, Acc) ->
                {[{schema, cookie, Cookie}], Acc};
           ({schema, Tab, CreateList}, Acc) ->
                Keys = [ram_copies, disc_copies, disc_only_copies],
                OptSwitch =
                    fun({Key, Val}) ->
                            case lists:member(Key, Keys) of
                                true -> {Key, lists:map(Switch, Val)};
                                false-> {Key, Val}
                            end
                    end,
                {[{schema, Tab, lists:map(OptSwitch, CreateList)}], Acc};
           (Other, Acc) ->
                {[Other], Acc}
        end,
    mnesia:traverse_backup(Source, Mod, Target, Mod, Convert, switched).
13
ответ дан 2 December 2019 в 00:19
поделиться

Обходное решение является миграцией. Только запустите mnesia кластер и переместите все свои таблицы и схему к другому узлу. Чем удаляют из оригинала и забыл.

2
ответ дан 2 December 2019 в 00:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: