on my MacBook (64bit) after upgrading to macports 2.10.1, "port
selfupdate" yields:


--->  Checking for newer releases of MacPorts
MacPorts base version 2.10.1 installed,
MacPorts base version 2.10.1 available.
--->  MacPorts base is already the latest version
--->  Updating the ports tree

The ports tree has been updated.
Error: process_cmd failed: sqlite error: another row available (100)
while executing query: SELECT cxx_stdlib FROM registry.ports WHERE id=726

This looks like database inconsistency. The id column is a primary key and so should always be unique, meaning there shouldn't be more than one row that has a given id.

Hard to say how it happened. The problem could potentially have been there for some time, only now being detected by the additional constraint checking that was enabled in 2.10. Memory or disk corruption are possibilities.

The first step toward fixing it is to find out which ports' db rows are affected. Try running this: sqlite3 /opt/local/var/macports/registry/registry.db "select * from ports where id=726"

If that succeeds, you should get 2 or more rows of port information. The port name will be in the second column. If it doesn't work, you may need to resort to a full database dump: sqlite3 /opt/local/var/macports/registry/registry.db ".dump" > registry_dump.txt

Before trying anything to fix it, make a backup of your registry.db. It's possible that simply uninstalling the two (or more) ports that share the same id will fix everything. If not, more manual database surgery may be required. I don't know how much work it's worthwhile for you to put into this before deleting everything and starting again is the better option.

Good luck,

- Josh

Reply via email to