Re: [Fedora-directory-users] Deleting database

Richard Megginson
2007-03-23T15:55:51Z

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 for the Python example!
>
> Ville