Re: create after create or retrievemore mus doesnt work

[prev] [thread] [next] [Date index for 2004/07/20]

From: Jay Strauss
Subject: Re: create after create or retrievemore mus doesnt work
Date: 12:21 on 20 Jul 2004
Maybe this was a typo, but you need to retrieve the "user" first before you
can print it
like you did with "node".

Or maybe you want to access the "user" via the "node" like:

print $node->author->email,"\n";

Jay
----- Original Message ----- 
From: "Teun van Eijsden" <groups.kasei.com@xxxx.xxxxx.xx>
To: <cdbi-talk@xxxxxx.xxxxx.xxx>
Sent: Tuesday, July 20, 2004 3:45 AM
Subject: create after create or retrievemore mus doesnt work



Hi all,

When i create a row in one table and then in another, it doesn't fill out
all the values of the second create, only the primary key.
Below you'll find a listing of everything relevant (separated bij bold
headers). Any pointers would be appreciated.

Teun van Eijsden
The Netherlands





MySQL DDL:

create table nodes (nid VARCHAR(255) PRIMARY KEY, author VARCHAR(255), date
TIMESTAMP, content LONGBLOB, public TINYINT);
create table access (id INT AUTO_INCREMENT PRIMARY KEY, nid VARCHAR(255),
uid VARCHAR(255), subscription TINYINT);
create table users (uid VARCHAR(255) PRIMARY KEY, email VARCHAR(255),
employee TINYINT);



perl script:

#!/cadappl/bin/perl -w

use strict;
use Class::DBI;

DBI->trace(1 => "/tmp/logfile"); # trace all the SQL code

package Doc::DBI;
use base 'Class::DBI';
Doc::DBI->connection('DBI:mysql:database=hivedoc;host=webservername.com',
'hive', '*****');

package Doc::Access;
use base 'Doc::DBI';
Doc::Access->table('access');
Doc::Access->columns(All => qw/id nid uid subscription/);
Doc::Access->has_a(nid => 'Doc::Node');

package Doc::Node;
use base 'Doc::DBI';
Doc::Node->table('nodes');
Doc::Node->columns(All => qw/nid author date content public/);
Doc::Node->has_a(author => 'Doc::User');
Doc::Node->has_many(access => 'Doc::Access');

package Doc::User;
use base 'Doc::DBI';
Doc::User->table('users');
Doc::User->columns(All => qw/uid email employee/);


package main;

#my $node = Doc::Node->create({nid => "HomePage", author => "eijsdent",
content => 'Silicon Hive rules', public => 1});
my $node = Doc::Node->retrieve("HomePage");
print 'Author: .';
print $node->author;
print ".\n";

my $user = Doc::User->create({'uid' => 'eijsdent', 'email' =>
'jaap@xxxxx.xx', 'employee' => 1});
#$user->update;
print 'Email: .';
print $user->email;
print ".\n";





Output:

./music.pl
Author: .eijsdent.
Use of uninitialized value in print at ./music.pl line 42.
Email: ..

in MySQL database:

select * from users;
+----------+-------+----------+
| uid      | email | employee |
+----------+-------+----------+
| eijsdent | NULL  |     NULL |
+----------+-------+----------+
1 row in set (0.00 sec)





SQL Trace Log:

    DBI 1.43-nothread default trace level set to 0x0/1 (pid 22839)
    ->
DBI->connect_cached(DBI:mysql:database=hivedoc;host=webdb.natlab.research.ph
ilips.com, hive, ****)
    -> DBI->install_driver(mysql) for linux perl=5.006001 pid=22839
ruid=3982 euid=3982
       install_driver: DBD::mysql version 2.1026 loaded from
/cadappl/perl/5.6.1/lib/site_perl/5.6.1/i686-linux/DBD/mysql.pm
    <- install_driver= DBI::dr=HASH(0x81dab2c)
    <-
connect_cached('database=hivedoc;host=webdb.natlab.research.philips.com'
'hive' ...)= DBI::db=HASH(0x830f88c) at DBI.pm line 595
    <- STORE('RootClass' 'DBIx::ContextualFetch')= 1 at DBI.pm line 628
       _set_isa([DBIx::ContextualFetch])
       DBIx::ContextualFetch::db::ISA skipped (already set to DBI::db)
       DBIx::ContextualFetch::st::ISA skipped (already set to DBI::st)
    <- STORE('RaiseError' 1)= 1 at DBI.pm line 642
    <- STORE('PrintError' 0)= 1 at DBI.pm line 642
    <- STORE('AutoCommit' 1)= 1 at DBI.pm line 642
 T  <- STORE('Taint' 1)= 1 at DBI.pm line 645
 T  <- FETCH('Taint')= 1 at DBI.pm line 645
 T  <- STORE('Username' 'hive')= 1 at DBI.pm line 645
 T  <> FETCH('Username')= 'hive' ('Username' from cache) at DBI.pm line 645
 T  <- STORE('FetchHashKeyName' 'NAME_lc')= 1 at DBI.pm line 645
 T  <> FETCH('FetchHashKeyName')= 'NAME_lc' ('FetchHashKeyName' from cache)
at DBI.pm line 645
 T  <- STORE('ShowErrorStatement' 1)= 1 at DBI.pm line 645
 T  <- FETCH('ShowErrorStatement')= 1 at DBI.pm line 645
 T  <- STORE('dbi_connect_method' 'connect_cached')= 1 at DBI.pm line 645
 T  <> FETCH('dbi_connect_method')= 'connect_cached' ('dbi_connect_method'
from cache) at DBI.pm line 645
 T  <- STORE('ChopBlanks' 1)= 1 at DBI.pm line 645
 T  <- FETCH('ChopBlanks')= 1 at DBI.pm line 645
    <- connect= DBIx::ContextualFetch::db=HASH(0x830f88c)
 T  <- STORE('dbi_connect_closure' CODE(0x830f934))= 1 at DBI.pm line 665
 T  <- prepare_cached('SELECT nid
FROM   nodes
WHERE  nid = ?
')= ( DBIx::ContextualFetch::st=HASH(0x82e7a90) ) [1 items] at DBI.pm line
391
 T  <- FETCH('Active')= '' at DBI.pm line 1124
 T  <- FETCH('Taint')= 1 at ContextualFetch.pm line 49
    <- STORE('Taint' 0)= 1 at ContextualFetch.pm line 50
    <- execute('HomePage')= 1 at ContextualFetch.pm line 51
 T  <- STORE('Taint' 1)= 1 at ContextualFetch.pm line 52
 T  <- FETCH('NAME_lc')= [ 'nid' ] at DBI.pm line 1125
 T  <- bind_columns(SCALAR(0x831d50c))= 1 at DBI.pm line 1125
 T  <- fetchrow_arrayref= [ 'HomePage' ] row1 at ContextualFetch.pm line 59
 T  <- fetchrow_arrayref= undef row1 at ContextualFetch.pm line 59
 T  <- FETCH('Active')= 1 at DBI.pm line 316
 T  <- ping= 1 at DBI.pm line 316
 T  <- prepare_cached('SELECT content, author, date, public
FROM   nodes
WHERE  nid=?
')= DBIx::ContextualFetch::st=HASH(0x831d62c) at DBI.pm line 391
 T  <- FETCH('Taint')= 1 at ContextualFetch.pm line 49
    <- STORE('Taint' 0)= 1 at ContextualFetch.pm line 50
    <- execute('HomePage')= 1 at ContextualFetch.pm line 51
 T  <- STORE('Taint' 1)= 1 at ContextualFetch.pm line 52
 T  <- fetchrow_array= ( 'Silicon Hive rules' 'eijsdent' '20040720101349'
'1' ) [4 items] row1 at ContextualFetch.pm line 87
 T  <- finish= 1 at ContextualFetch.pm line 88
 T  <- FETCH('Active')= 1 at DBI.pm line 316
 T  <- ping= 1 at DBI.pm line 316
 T  <- prepare_cached('INSERT INTO users (uid)
VALUES (?)
')= DBIx::ContextualFetch::st=HASH(0x832747c) at DBI.pm line 391
 T  <- FETCH('Taint')= 1 at ContextualFetch.pm line 49
    <- STORE('Taint' 0)= 1 at ContextualFetch.pm line 50
    <- execute('eijsdent')= 1 at ContextualFetch.pm line 51
 T  <- STORE('Taint' 1)= 1 at ContextualFetch.pm line 52
 T  <- FETCH('Active')= 1 at DBI.pm line 316
 T  <- ping= 1 at DBI.pm line 316
 T  <- prepare_cached('SELECT employee, email
FROM   users
WHERE  uid=?
')= DBIx::ContextualFetch::st=HASH(0x83277ac) at DBI.pm line 391
 T  <- FETCH('Taint')= 1 at ContextualFetch.pm line 49
    <- STORE('Taint' 0)= 1 at ContextualFetch.pm line 50
    <- execute('eijsdent')= 1 at ContextualFetch.pm line 51
 T  <- STORE('Taint' 1)= 1 at ContextualFetch.pm line 52
 T  <- fetchrow_array= ( undef undef ) [2 items] row1 at ContextualFetch.pm
line 87
 T  <- finish= 1 at ContextualFetch.pm line 88
    <- disconnect_all= '' at DBI.pm line 674
!T  <- DESTROY(DBIx::ContextualFetch::st=HASH(0x83277ac))= undef during
global destruction
!T  <- DESTROY(DBIx::ContextualFetch::st=HASH(0x832747c))= undef during
global destruction
!T  <- DESTROY(DBIx::ContextualFetch::st=HASH(0x831d62c))= undef during
global destruction
!T  <- DESTROY(DBIx::ContextualFetch::st=HASH(0x82e7a90))= undef during
global destruction
!T  <- DESTROY(DBIx::ContextualFetch::db=HASH(0x830f88c))= undef during
global destruction
!   <- DESTROY(DBI::dr=HASH(0x81dab2c))= (not implemented) during global
destruction

create after create or retrievemore mus doesnt work
Teun van Eijsden 08:45 on 20 Jul 2004

Re: create after create or retrievemore mus doesnt work
Jay Strauss 12:21 on 20 Jul 2004

Generated at 11:34 on 01 Dec 2004 by mariachi v0.52