Re: [Fedora-directory-users] Deleting database

Noriko Hosoi
2007-03-23T23:50:21Z

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...
>>
>> Just tested the import, it works very well. Entries are modified,
>> removed and added to restore the original database. It''s very
fast
>> too (my test server runs on an old Pentium 3):
>>
>>   Processed 9854 entries in 9 seconds. (1094.89 entries/sec)
>>
>> Thank you again!
>>
>> Ville
>>
>> --
>> Fedora-directory-users mailing list
>> Fedora-directory-users@redhat.com
>> https://www.redhat.com/mailman/listinfo/fedora-directory-users
> ------------------------------------------------------------------------