On Fri, 23 Mar 2007, Noriko Hosoi wrote:
Richard Megginson wrote:
> Ville Silventoinen wrote:
>> On Fri, 23 Mar 2007, Richard Megginson wrote:
>>
>>> Ville Silventoinen wrote:
>>>> On Fri, 23 Mar 2007, Richard Megginson wrote:
>>>>
>>>>> Ville Silventoinen wrote:
>>>>>> On Thu, 22 Mar 2007, Richard Megginson wrote:
>>>>>>
>>>>>>> Ville Silventoinen wrote:
>>>>>>>> I'm using Fedora DS 1.0.4. I've written an
application that uses
>>>>>>>> Fedora DS and next I'm planning to write unit tests.
I'm wondering
>>>>>>>> if there is a way to delete the whole userRoot database
and create
>>>>>>>> it again? I searched the documentation and there seems to
be a way
>>>>>>>> to create the database from command line, but no way to
delete it,
>>>>>>>> except from the GUI?
>>>>>>> Just delete the entry (e.g. delete cn=userRoot,cn=ldbm
>>>>>>> database,cn=plugins,cn=config). You will have to do some
sort of
>>>>>>> recursive deletion to remove all of the child entries. I
think this
>>>>>>> is what the GUI does - just check the access logs for the
server
>>>>>>> after deleting the database in the console.
>>>>>>
>>>>>> Thank you Richard, that worked very well. I also delete the
mapping
>>>>>> tree entry, which maps the suffix to the backend database:
>>>>>>
>>>>>> dn: cn="dc=ebi,dc=ac,dc=uk",cn=mapping
tree,cn=config
>>>>>> objectclass: top
>>>>>> objectclass: extensibleObject
>>>>>> objectclass: nsMappingTree
>>>>>> nsslapd-state: backend
>>>>>> nsslapd-backend: userRoot
>>>>>> cn: dc=ebi,dc=ac,dc=uk
>>>>>>
>>>>>> The GUI works slightly differently, it sets nsslapd-state to
>>>>>> "disabled" and removes the nsslapd-backend attribute.
>>>>>>
>>>>>> If anyone has a need for a script that can delete and create a
>>>>>> database, I can send it to the list. I use Python with
python-ldap
>>>>>> package.
>>>>>>
>>>>>> Thank you very much for a fast response!
>>>>> If you just want to restore the database to it's initial state,
you can
>>>>> just do an import - ldif2db or ldif2db.pl - this will remove the
>>>>> previous contents and create a new database. This might be
sufficient
>>>>> for your purposes, without having to delete the database and mapping
>>>>> tree entries. See ldif2db.pl for how to invoke an import operation
via
>>>>> ldap
>>>>
>>>> This may be a stupid question but how do I get ldif2db.pl to remove the
>>>> previous contents so it can create the entries?
>>>>
>>>> I tried like this:
>>>>
>>>> ./ldif2db.pl -v -D "cn=Directory Manager" -w mypassword -n
userRoot -i
>>>> /path/to/userRoot.ldif
>>>>
>>>> but in the errors log it shows for every entry "WARNING: Skipping
>>>> duplicate entry".
>>> That usually means there are duplicate entries in your userRoot.ldif file
>>> - can you post it somewhere and post the link to it here? I'd rather not
>>> spam the list with a large ldif file.
>>
>> Thanks Richard! You were right, all the entries were defined twice in the
>> file. I don't understand how that happened, I used the "Export
Databases"
>> task in the Console to create the file. If the file already exists, does
>> it append new entries to it? I must have done something wrong...
> It might append to it. I'm not sure.
I could not reproduce it. If I choose the same file name to export database,
I get "File '<filename>' already exists. Its contents will be
overwritten.
Do you want to continue?" dialog box, and my existing file is really
overwritten...
I tried it as well, I couldn't reproduce the problem either. Unfortunately
I deleted the file so I cannot check in which order the entries were.
Thanks for the help.
Ville