Author Topic: Plugin roles_permissions mysql fehler #1005  (Read 9441 times)

Offline #1005

  • Newbie
  • *
  • Posts: 8
Plugin roles_permissions mysql fehler #1005
« on: October 30, 2013, 08:58:23 AM »
Hallo,
Ich möchte mir das Plugin roles_permissions installieren:
Also habe ich mir das Plugin heruntergeladen: http://sourceforge.net/projects/rolespermission/ und in das pluginverzeichnis von RoundCube getan.
In der INSTALL steht, das ich die mysql.initial.sql-Datei in die DB importieren soll, über phpmyadmin habe ich dann die datei in sql hochgeladen. Leider kommt der Fehler:
Code: [Select]
SQL query:

ALTER TABLE `role_users` ADD CONSTRAINT `role_users_ibfk_2` FOREIGN KEY ( `role_id` ) REFERENCES `roles` ( `role_id` ) ON DELETE CASCADE ON UPDATE CASCADE

MySQL said: Documentation
#1005 - Can't create table 'db*******.#sql-2b41_**af6' (errno: 150)

Die mysql.initial.sql-Datei:
Code: [Select]
CREATE TABLE IF NOT EXISTS `roles` (
  `role_id` int(11) NOT NULL auto_increment,
  `name` text,
  PRIMARY KEY  (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `permissions` (
  `permission_id` int(11) NOT NULL auto_increment,
  `code` text,
  `name` text,
  PRIMARY KEY  (`permission_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `role_users` (
  `role_user_id` int(11) NOT NULL auto_increment,
  `user_id` int(10) unsigned NOT NULL,
  `role_id` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`role_user_id`),
  KEY `user_id` (`user_id`),
  KEY `role_id` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

--
-- Constraints for table `role_users`
--
ALTER TABLE `role_users`
  ADD CONSTRAINT `role_users_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `role_users`
  ADD CONSTRAINT `role_users_ibfk_2` FOREIGN KEY (`role_id`) REFERENCES `roles` (`role_id`) ON DELETE CASCADE ON UPDATE CASCADE;

CREATE TABLE IF NOT EXISTS `role_permissions` (
  `role_permission_id` int(11) NOT NULL auto_increment,
  `permission_id` int(10) unsigned NOT NULL,
  `role_id` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`role_permission_id`),
  KEY `permission_id` (`permission_id`),
  KEY `role_id` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

--
-- Constraints for table `role_permissions`
--
ALTER TABLE `role_permissions`
  ADD CONSTRAINT `role_permissions_ibfk_1` FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`permission_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `role_permissions`
  ADD CONSTRAINT `role_permissions_ibfk_2` FOREIGN KEY (`role_id`) REFERENCES `roles` (`role_id`) ON DELETE CASCADE ON UPDATE CASCADE;
Ich weiß schon das es irgendwas mit den Schlüsseln zu tun hat. Aber wie löse ich das jetzt?

LG #1005

Offline Dennis1993

  • Full Member
  • ***
  • Posts: 69
Re: Plugin roles_permissions mysql fehler #1005
« Reply #1 on: October 30, 2013, 09:20:48 AM »
Liegt wahrscheinlich daran, dass die Felder nicht gleich sind.
In der Tabelle "users" ist das Feld user_id INT(10) und in der anderen Tabelle von deinem geposteten Code ist es INT(11). Passe die 11 mal an und mache daraus eine 10 in der Tabelle. Dann sollte die referenzielle Integrität laufen.

Also lösche die Tabellen und passe in dem Code jeweils die INT(11) an, so dass dort steht INT(10). Dann nochmals in phpMyAdmin ausführen.

Offline #1005

  • Newbie
  • *
  • Posts: 8
Re: Plugin roles_permissions mysql fehler #1005
« Reply #2 on: October 30, 2013, 09:49:26 AM »
Danke für den Vorschlag.
Aus allen int(11) ein int(10) machen brachte leider auch kein Erfolg.

Benutzt den keiner dieses Plugin?

Offline Dennis1993

  • Full Member
  • ***
  • Posts: 69
Re: Plugin roles_permissions mysql fehler #1005
« Reply #3 on: October 30, 2013, 10:40:54 AM »
Ich benutze es nicht.

Habe das selbst mal eben in meiner Datenbank ausprobiert und korrigiert. So sollte es eigentlich laufen, probiere es mal aus. Lösche vorher bitte die vier Tabellen noch einmal raus.

Code: [Select]
CREATE TABLE IF NOT EXISTS `roles` (
  `role_id` int(10) unsigned NOT NULL auto_increment,
  `name` text,
  PRIMARY KEY  (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `permissions` (
  `permission_id` int(10) NOT NULL auto_increment,
  `code` text,
  `name` text,
  PRIMARY KEY  (`permission_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `role_users` (
  `role_user_id` int(10) NOT NULL auto_increment,
  `user_id` int(10) unsigned NOT NULL,
  `role_id` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`role_user_id`),
  KEY `user_id` (`user_id`),
  KEY `role_id` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `role_permissions` (
  `role_permission_id` int(10) NOT NULL auto_increment,
  `permission_id` int(10) NOT NULL,
  `role_id` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`role_permission_id`),
  KEY `permission_id` (`permission_id`),
  KEY `role_id` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


ALTER TABLE `role_users`
  ADD FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `role_users`
  ADD FOREIGN KEY (`role_id`) REFERENCES `roles` (`role_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `role_permissions`
  ADD FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`permission_id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `role_permissions`
  ADD FOREIGN KEY (`role_id`) REFERENCES `roles` (`role_id`) ON DELETE CASCADE ON UPDATE CASCADE;

Offline #1005

  • Newbie
  • *
  • Posts: 8
Re: Plugin roles_permissions mysql fehler #1005
« Reply #4 on: October 30, 2013, 10:55:21 AM »
Leider doch nicht:
roundcube ist jetzt weiß?
->keine Antwort auf Anfragen
« Last Edit: October 30, 2013, 11:05:10 AM by #1005 »

Offline #1005

  • Newbie
  • *
  • Posts: 8
Re: Plugin roles_permissions mysql fehler #1005
« Reply #5 on: October 30, 2013, 11:08:29 AM »
was ist mit dem role_permissions_ibfk_1?

Offline Dennis1993

  • Full Member
  • ***
  • Posts: 69
Re: Plugin roles_permissions mysql fehler #1005
« Reply #6 on: October 30, 2013, 11:38:32 AM »
die mit ibfk werden automatisch von PMA erzeugt, ist also nicht zwingend notwendig.

Welche RoundCube, PHP- und MySQL-Version hast du denn installiert?
Ich habe das mit Roundcube 0.9.5, PHP 5.5.3 und MySQL 5.6.11 gemacht, da läuft der Import mit meinem eben geposteten Code gut.

Wenn die Seite weiß ist, schau mal was in der Datei logs/error drin steht, gff. hier posten.

Offline #1005

  • Newbie
  • *
  • Posts: 8
Re: Plugin roles_permissions mysql fehler #1005
« Reply #7 on: October 30, 2013, 12:14:34 PM »
Log Error:
Code: [Select]
[30-Oct-2013 16:58:22 Europe/Berlin] PHP Fatal error:  Call-time pass-by-reference has been removed in /homepages/***/***********/htdocs/webmail/roundcubemail/plugins/roles_permissions/roles_permissions.php on line 81
[30-Oct-2013 17:01:02 Europe/Berlin] PHP Fatal error:  Call-time pass-by-reference has been removed in /homepages/***/***********/htdocs/webmail/roundcubemail/plugins/roles_permissions/roles_permissions.php on line 81
[30-Oct-2013 17:01:56 +0100]: PHP Error: Failed to load plugin file /kunden/homepages/***/***********/htdocs/webmail/roundcubemail/plugins/roles_permissions/roles_permissions.php in /homepages/***/***********/htdocs/webmail/roundcubemail/program/lib/Roundcube/rcube_plugin_api.php on line 224 (GET /)
[30-Oct-2013 17:03:12 Europe/Berlin] PHP Fatal error:  Call-time pass-by-reference has been removed in /homepages/***/***********/htdocs/webmail/roundcubemail/plugins/roles_permissions/roles_permissions.php on line 81
(Nach löschen des Plugins ist Roundcube wieder aufrufbar, nach hinzufügen wieder nicht...)

Ich benutze Roundcube Webmail 0.9.5., MySQL5 und PHP 5.4.21.

Offline #1005

  • Newbie
  • *
  • Posts: 8
Re: Plugin roles_permissions mysql fehler #1005
« Reply #8 on: October 30, 2013, 12:42:12 PM »
roles_permissions.php:
Code: [Select]
class roles_permissions extends rcube_plugin
{
   private $rc;
   private $anonymous = true;
   private $uid = false;
   private $registered_permissions = array();

   public function __construct(&$api)
   {
      // Call parent's constructor
      parent::__construct(&$api); //line 81

      // Take an instance of rcmail
      $this->rc = rcmail::get_instance();
Die Seite http://stackoverflow.com/questions/8971261/php-5-4-call-time-pass-by-reference-easy-fix-available gab mir denn Tip das ich das "&" rausnehmen soll.
Die Seite ist dann wieder aufrufbar, aber das plugin wird nicht angezeigt...

Kann es sein das für diese php version nicht funktioniert :(

Offline mbsouth

  • Full Member
  • ***
  • Posts: 71
Re: Plugin roles_permissions mysql fehler #1005
« Reply #9 on: October 31, 2013, 04:35:33 PM »
 "call-time pass-by-reference" ist seit PHP 5.3.x als deprecated gesetzt und wird in PHP 5.4 nicht mehr unterstützt. Außerdem wurde das PlugIn seit mehr als 3 1/2 Jahren nicht gepflegt.
Mein Tipp am Rande: lass es!

JustMy2Cents mbsouth