Re: [Fedora-directory-users] Deleting database

Ville Silventoinen
2007-03-26T09:00:13Z

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