Forum OpenACS Q&A: error when I delete a subsite

Collapse
Posted by David Lee on
When I delete a subsite, it displays the following message. What should I do?

Database operation "0or1row" failed (exception NSDB, "Query was not a statement returning rows.")

ERROR: update or delete on "site_nodes" violates foreign key constraint "site_nodes_parent_id_fk" on "site_nodes"
DETAIL: Key (node_id)=(888) is still referenced from table "site_nodes".

SQL:
select site_node__delete('888');

while executing
"ns_pg_bind 0or1row nsdb0 {
select site_node__delete(:node_id);
}"
("uplevel" body line 1)
invoked from within
"uplevel $ulevel [list ns_pg_bind $type $db $sql]"
("postgresql" arm line 2)
invoked from within
"switch $driverkey {
oracle {
return [uplevel $ulevel [list ns_ora $type $db $sql] $args]
}
..."
invoked from within
"db_exec 0or1row $db $full_statement_name $sql"
invoked from within
"if {[regexp -nocase -- {^\s*select} $test_sql match]} {
# ns_log Debug "PLPGSQL: bypassed anon function"
set selection..."
("uplevel" body line 6)
invoked from within
"uplevel 1 $code_block "
invoked from within
"db_with_handle -dbn $dbn db {
# plsql calls that are simple selects bypass the plpgsql
# mechanism for creating anonymous fun..."
(procedure "db_exec_plsql" line 57)
invoked from within
"db_exec_plsql delete_site_node {}"
(procedure "site_node::delete" line 3)
invoked from within
"site_node::delete -node_id $id"
("foreach" body line 8)
invoked from within
"foreach id $node_id {
lappend package_id [site_node::get_object_id -node_id $id]

# Unmount the application
site_node:..."
("uplevel" body line 2)
invoked from within
"uplevel 1 $transaction_code "
(procedure "db_transaction" line 1)
invoked from within
"db_transaction {
foreach id $node_id {
lappend package_id [site_node::get_object_id -node_id $id]

# Unmount the applicati..."
("uplevel" body line 33)
invoked from within
"uplevel {
ad_page_contract {
Delete an application.

@author Lars Pind (mailto:lars@collaboraid.biz)
@creation-date 2003-05-28
@cvs-id..."
(procedure "code::tcl::/var/lib/aolserver/tedle/packages/acs-subsite/www..." line 2)
invoked from within
"code::tcl::$__adp_stub"
invoked from within
"if { [file exists $__adp_stub.tcl] } {

# ensure that data source preparation procedure exists and is up-to-date
adp_init tcl $__adp_stub
..."
("uplevel" body line 3)
invoked from within
"uplevel {

if { [file exists $__adp_stub.tcl] } {

# ensure that data source preparation procedure exists and is up-to-date
adp_init t..."
(procedure "adp_prepare" line 2)
invoked from within
"adp_prepare "
(procedure "template::adp_parse" line 30)
invoked from within
"template::adp_parse [file root [ad_conn file]] {}"
(procedure "adp_parse_ad_conn_file" line 5)
invoked from within
"$handler"
("uplevel" body line 2)
invoked from within
"uplevel $code"
invoked from within
"ad_try {
$handler
} ad_script_abort val {
# do nothing
}"
invoked from within
"rp_serve_concrete_file [ad_conn file]"
(procedure "rp_serve_abstract_file" line 60)
invoked from within
"rp_serve_abstract_file "$root/$path""
("uplevel" body line 2)
invoked from within
"uplevel $code"
invoked from within
"ad_try {
rp_serve_abstract_file "$root/$path"
set tcl_url2file([ad_conn url]) [ad_conn file]
set tcl_url2path_info..."

Collapse
Posted by David Lee on
along the lines of what I just asked, how do you unmount subsites correctly?
Collapse
Posted by Ben Koot on
The only place to unmount safely is:

1. Go to Sitewide admin, select developers admin in the right hand top corner of the page, and select sitemap.

2. Select the the subsite you want to delete, and click on the + if youve other modules installed under the subsite.

3. Remove them first by selecting "unmount" and than delete and repeat this process until all modules are removed.

4. Now you can unmount and delete the subsite.

5. You can not remove modules direct form the subsite admin unfortunatly, allthough the trashcan gives the impression that would work.

That should do the trick and should prevent the error message above beeing displayed.

Good luck

Ben