[Fedora-directory-users] Deleting database

Ville Silventoinen vsi at ebi.ac.uk
Mon Mar 26 09:00:13 UTC 2007


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




More information about the Fedora-directory-users mailing list