[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