diff options
Diffstat (limited to 'rt/sbin/rt-setup-database.in')
-rw-r--r-- | rt/sbin/rt-setup-database.in | 82 |
1 files changed, 21 insertions, 61 deletions
diff --git a/rt/sbin/rt-setup-database.in b/rt/sbin/rt-setup-database.in index e83aa262b..0b9a1071a 100644 --- a/rt/sbin/rt-setup-database.in +++ b/rt/sbin/rt-setup-database.in @@ -1,15 +1,9 @@ #!@PERL@ -w -# {{{ BEGIN BPS TAGGED BLOCK +# BEGIN LICENSE BLOCK # -# COPYRIGHT: -# -# This software is Copyright (c) 1996-2004 Best Practical Solutions, LLC -# <jesse@bestpractical.com> +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -21,29 +15,14 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -# -# CONTRIBUTION SUBMISSION POLICY: +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) # -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# }}} END BPS TAGGED BLOCK +# END LICENSE BLOCK + use strict; use vars qw($PROMPT $VERSION $Handle $Nobody $SystemUser $item); use vars @@ -108,30 +87,10 @@ if ( $args{'action'} eq 'init' ) { print "...skipped as ".$args{'dba'} ." is not " . $RT::DatabaseUser . " or we're working with Oracle.\n"; } - if ($RT::DatabaseType eq "mysql") { - # Check which version we're running - my ($version) = $dbh->selectrow_hashref("show variables like 'version'")->{Value} =~ /^(\d\.\d+)/; - print "*** Warning: RT is unsupported on MySQL versions before 4.0.x\n" if $version < 4; - - # MySQL must have InnoDB support - my $innodb = $dbh->selectrow_hashref("show variables like 'have_innodb'")->{Value}; - if ($innodb eq "NO") { - die "RT requires that MySQL be compiled with InnoDB table support.\n". - "See http://dev.mysql.com/doc/mysql/en/InnoDB.html\n"; - } elsif ($innodb eq "DISABLED") { - die "RT requires that MySQL InnoDB table support be enabled.\n". - ($version < 4 - ? "Add 'innodb_data_file_path=ibdata1:10M:autoextend' to the [mysqld] section of my.cnf\n" - : "Remove the 'skip-innodb' line from your my.cnf file, restart MySQL, and try again.\n"); - } - } - - # SQLite can't deal with the disconnect/reconnect - unless ($RT::DatabaseType eq 'SQLite') { + $dbh->disconnect; + $dbh = DBI->connect( $Handle->DSN, $args{'dba'}, $args{'dba-password'} ) + || die $DBI::errstr; - $dbh->disconnect; - $dbh = DBI->connect( $Handle->DSN, $args{'dba'}, $args{'dba-password'} ) || die $DBI::errstr; - } print "Now populating database schema.\n"; insert_schema(); print "Now inserting database ACLs\n"; @@ -151,8 +110,11 @@ elsif ( $args{'action'} eq 'drop' ) { } drop_db(); } +elsif ( $args{'action'} eq 'insert_initial' ) { + insert_initial_data(); +} elsif ( $args{'action'} eq 'insert' ) { - insert_data( $args{'datafile'} || ($args{'datadir'}."/content")); + insert_data( $args{'datafile'} ); } elsif ($args{'action'} eq 'acl') { $dbh = DBI->connect( $Handle->DSN, $args{'dba'}, $args{'dba-password'} ) @@ -315,10 +277,6 @@ sub insert_acl { do $base_path . "/acl.mysql" || die "Couldn't find ACLS for mysql in " . $RT::EtcPath . "\n" . $@; } - elsif ( $RT::DatabaseType =~ /^Sybase$/i ) { - do $base_path . "/acl.Sybase" - || die "Couldn't find ACLS for Sybase in " . $RT::EtcPath . "\n" . $@; - } elsif ( $RT::DatabaseType =~ /^informix$/i ) { do $base_path . "/acl.Informix" || die "Couldn't find ACLS for Informix in " . $RT::EtcPath . "\n" . $@; @@ -381,7 +339,7 @@ sub insert_initial_data { #Put together a current user object so we can create a User object my $CurrentUser = new RT::CurrentUser(); - print "Checking for existing system user..."; + print "Checking for existing system user ($CurrentUser)..."; my $test_user = RT::User->new($CurrentUser); $test_user->Load('RT_System'); if ( $test_user->id ) { @@ -409,7 +367,7 @@ sub insert_initial_data { exit(1); } print "done.\n"; - $RT::Handle->Disconnect() unless ($RT::DatabaseType eq 'SQLite'); + $RT::Handle->Disconnect(); } @@ -608,7 +566,7 @@ sub insert_data { } print "done.\n"; } - $RT::Handle->Disconnect() unless ($RT::DatabaseType eq 'SQLite'); + $RT::Handle->Disconnect(); } @@ -636,6 +594,8 @@ $0: Set up RT's database --action init Initialize the database drop Drop the database. This will ERASE ALL YOUR DATA + insert_initial + Insert RT's core system objects insert Insert data into RT's database. By default, will use RT's installation data. To use a local or supplementary datafile, specify it |