Forum .LRN Q&A: postgres problem with new forums

When I try to create a new forum within a class, I get this error message:

Request Error

Database operation "0or1row" failed (exception NSINT, "Query returned
more than one row.")
    while executing
"ns_pg_bind 0or1row nsdb0 {

    select site_node__url(node_id)
          from site_nodes
        where object_id = :package_id

      }"
    ("uplevel" body line 1)
    invoked from within
"uplevel $ulevel [list ns_pg_bind $type $db $sql"
    invoked from within
"db_exec 0or1row $db $full_name $sql"
    invoked from within
"set selection [db_exec 0or1row $db $full_name $sql]"
    ("uplevel" body line 2)
    invoked from within
"uplevel 1 $code_block "
    invoked from within
"db_with_handle db {
    set selection [db_exec 0or1row $db $full_name $sql]
    }"
    (procedure "db_string" line 7)
    invoked from within
"db_string apm_package_url_from_key {
    select site_node.url(node_id)
          from site_nodes
        where object_id = :package_id
    } -default ..."
    (procedure "apm_package_url_from_key_mem" line 3)
    invoked from within
"apm_package_url_from_key_mem notifications"
    ("eval" body line 1)
    invoked from within
"eval $script"
    invoked from within
"ns_cache eval util_memoize $script {
        list $current_time [eval $script]
    }"
    (procedure "util_memoize" line 20)
    invoked from within
"util_memoize "apm_package_url_from_key_mem $package_key""
    (procedure "apm_package_url_from_key" line 2)
    invoked from within
"apm_package_url_from_key [notification::package_key"
    (procedure "subscribe_url" line 5)
    invoked from within
"subscribe_url -type $type -object_id $object_id -url $url -user_id
$user_id"
    (procedure "notification::display::request_widget" line 17)
    invoked from within
"notification::display::request_widget  -type forums_forum_notif
-object_id $forum_id  -pretty_name $forum(name)  -url [ad_conn
url]?forum_id=$forum_i..."
    invoked from within
"set notification_chunk [notification::display::request_widget  -type
forums_forum_notif  -object_id $forum_id  -pretty_name $forum(name)
-url [ad_con..."
    ("uplevel" body line 54)
    invoked from within
"uplevel {
          ad_page_contract {

    one forum view

    @author Ben Adida (mailto:ben@openforce.net)
    @creation-date 2002-05-24
    @version $Id: for..."
    (procedure
"code::tcl::/export/staging/janine/packages/forums/www/forum-..." 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 3)
    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 7)
    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([ad_conn url]) [ad_conn path_inf..."

Collapse
Posted by Michael Feldstein on

Here it is again with the "pre" tag

Request Error

Database operation "0or1row" failed (exception NSINT, "Query returned more than one row.")
    while executing
"ns_pg_bind 0or1row nsdb0 {
      
    select site_node__url(node_id) 
          from site_nodes 
         where object_id = :package_id
    
      }"
    ("uplevel" body line 1)
    invoked from within
"uplevel $ulevel [list ns_pg_bind $type $db $sql"
    invoked from within
"db_exec 0or1row $db $full_name $sql"
    invoked from within
"set selection [db_exec 0or1row $db $full_name $sql]"
    ("uplevel" body line 2)
    invoked from within
"uplevel 1 $code_block "
    invoked from within
"db_with_handle db {
    set selection [db_exec 0or1row $db $full_name $sql]
    }"
    (procedure "db_string" line 7)
    invoked from within
"db_string apm_package_url_from_key {
    select site_node.url(node_id) 
          from site_nodes 
         where object_id = :package_id
    } -default ..."
    (procedure "apm_package_url_from_key_mem" line 3)
    invoked from within
"apm_package_url_from_key_mem notifications"
    ("eval" body line 1)
    invoked from within
"eval $script"
    invoked from within
"ns_cache eval util_memoize $script {
        list $current_time [eval $script]
    }"
    (procedure "util_memoize" line 20)
    invoked from within
"util_memoize "apm_package_url_from_key_mem $package_key""
    (procedure "apm_package_url_from_key" line 2)
    invoked from within
"apm_package_url_from_key [notification::package_key"
    (procedure "subscribe_url" line 5)
    invoked from within
"subscribe_url -type $type -object_id $object_id -url $url -user_id $user_id"
    (procedure "notification::display::request_widget" line 17)
    invoked from within
"notification::display::request_widget  -type forums_forum_notif  -object_id $forum_id  -pretty_name $forum(name)  -url [ad_conn url]?forum_id=$forum_i..."
    invoked from within
"set notification_chunk [notification::display::request_widget  -type forums_forum_notif  -object_id $forum_id  -pretty_name $forum(name)  -url [ad_con..."
    ("uplevel" body line 54)
    invoked from within
"uplevel {
          ad_page_contract {

    one forum view

    @author Ben Adida (ben@openforce.net)
    @creation-date 2002-05-24
    @version $Id: for..."
    (procedure "code::tcl::/export/staging/janine/packages/forums/www/forum-..." 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 3)
    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 7)
    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([ad_conn url]) [ad_conn path_inf..."
Collapse
Posted by Arjun Sanyal on
It appears that the notifications package was mounted twice. It's not meant to be multiply-mounted, and the code assumes this. Since you can't delete a site node from the site-map you have to do it through psql or just drop your db. Here's the sql if you want to do it that way:

1. select *, site_node__url(node_id) from site_nodes where object_id = (select package_id from apm_packages where package_key = 'notifications');

2. pick the node_id that's where url is not equal to /notifications/

3. then delete it with:

delete from site_nodes where node_id = XXXX;

or just drop the db, since there could be side-effects to this that I don't know about.

Collapse
Posted by Janine Ohmer on
Actually, the problem seems to have been that notifications wasn't mounted at all, though that doesn't quite fit the error.  I had forgotten to mount it, which I did not realize until I had done a complete reinstall and went through the instructions again.  This time forums worked ok.

FYI, I don't seem to be able to mount attachments.  It's installed and enabled, and shows up in the APM as an application, but it's not available in the list of applications to choose from in the site map.

Collapse
Posted by Michael Olan on
I was able to create a new forum, but when I try to access it I get a similar error to what is shown here. Everything seems to be mounted in the site map. Does this mean I'll need to drop the db (using Oracle) and do it again?
Collapse
Posted by Arjun Sanyal on
if you can create a forum, then it's a different error, i think. post the error here (in pre tags, please!).
Collapse
Posted by Michael Olan on
The error occurs when I click on the link for the forum I created. Here's the message:
Request Error
Query returned more than one row.
    while executing
"ns_ora 0or1row nsdb0 {
      
	select site_node.url(node_id) 
          from site_nodes 
         where object_id = :package_id
    
      }"
    ("uplevel" body line 1)
    invoked from within
"uplevel $ulevel [list ns_ora $type $db $sql] $args"
    invoked from within
"db_exec 0or1row $db $full_name $sql"
    invoked from within
"set selection [db_exec 0or1row $db $full_name $sql]"
    ("uplevel" body line 2)
    invoked from within
"uplevel 1 $code_block "
    invoked from within
"db_with_handle db {
	set selection [db_exec 0or1row $db $full_name $sql]
    }"
    (procedure "db_string" line 7)
    invoked from within
"db_string apm_package_url_from_key {
	select site_node.url(node_id) 
          from site_nodes 
         where object_id = :package_id
    } -default ..."
    (procedure "apm_package_url_from_key_mem" line 3)
    invoked from within
"apm_package_url_from_key_mem notifications"
    ("eval" body line 1)
    invoked from within
"eval $script"
    invoked from within
"ns_cache eval util_memoize $script {
	    list $current_time [eval $script]
	}"
    (procedure "util_memoize" line 20)
    invoked from within
"util_memoize "apm_package_url_from_key_mem $package_key""
    (procedure "apm_package_url_from_key" line 2)
    invoked from within
"apm_package_url_from_key [notification::package_key"
    (procedure "subscribe_url" line 5)
    invoked from within
"subscribe_url -type $type -object_id $object_id -url $url -user_id $user_id -pretty_name $pretty_name"
    (procedure "notification::display::request_widget" line 17)
    invoked from within
"notification::display::request_widget  -type forums_forum_notif  -object_id $forum_id  -pretty_name $forum(name)  -url [ad_conn url]?forum_id=$forum_i..."
    invoked from within
"set notification_chunk [notification::display::request_widget  -type forums_forum_notif  -object_id $forum_id  -pretty_name $forum(name)  -url [ad_con..."
    ("uplevel" body line 60)
    invoked from within
"uplevel {
    	  ad_page_contract {

    one forum view

    @author Ben Adida (ben@openforce.net)
    @creation-date 2002-05-24
    @version $Id: for..."
    (procedure "code::tcl::/apps/web/dotlrn/packages/forums/www/forum-view" 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 3)
    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 7)
    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([ad_conn url]) [ad_conn path_inf..."
Collapse
Posted by Michael Olan on
A little more info... I get a similar error when trying to add a new News Item.

Adding to the FAQ and Calendar event work OK.

Also, I may have done something bad... In the site map, I added Forums, just like notifications and attachments as described in the install instructions. However, deleting this item does not fix the problem.

Collapse
Posted by Arjun Sanyal on
you are right, it does look like the same error. i think notifications got mounted twice. do you get more than one row returned when you do the select i mentioned above? if so use the delete stmt, but this could have side-effects, so do a backup beforehand.