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