2 Tabellen migrieren

Hi

Ich komme zeitlich leider nicht dazu mich mehr mit SQL zu beschäftigen. Für meine private Homepage teste ich gerade Typo3 das ich mit pgsql betreibe. Was ich machen will ist Typo3 an mein Nuxeo DMS zu koppeln. Leider zicken die CMIS Extensions beim Anlegen der Tabellen. Nun da muss ich händich nachbessern.

Das ist das was mir Typo3 für MySQL ausgibt.

CREATE TABLE tx_cmis_server (
uid int(11) NOT NULL auto_increment,
pid int(11) NOT NULL default '0',
tstamp int(11) NOT NULL default '0',
crdate int(11) NOT NULL default '0',
cruser_id int(11) NOT NULL default '0',
title varchar(255) NOT NULL default '',
url varchar(255) NOT NULL default '',
ssl_check tinyint(3) NOT NULL default '0',
protocol enum('1','2') NOT NULL default '1',
type varchar(60) NOT NULL default '',
login varchar(255) NOT NULL default '',
password varchar(255) NOT NULL default '',
offline tinyint(3) NOT NULL default '0',
PRIMARY KEY (uid),
KEY parent (pid)
);

CREATE TABLE tx_cmis_connection (
uid int(11) NOT NULL auto_increment,
pid int(11) NOT NULL default '0',
tstamp int(11) NOT NULL default '0',
crdate int(11) NOT NULL default '0',
cruser_id int(11) NOT NULL default '0',
user_id text NOT NULL,
group_id text NOT NULL,
server text NOT NULL,
login varchar(255) NOT NULL default '',
password varchar(255) NOT NULL default '',
PRIMARY KEY (uid),
KEY parent (pid)
);

Das bekomme ich mit mysql2pgsql raus

CREATE SEQUENCE "tx_cmis_server_uid_seq" ;

CREATE TABLE  "tx_cmis_server" (
 "uid" integer DEFAULT nextval('"tx_cmis_server_uid_seq"') NOT NULL,
 "pid"   int NOT NULL default '0', 
 "tstamp"   int NOT NULL default '0', 
 "crdate"   int NOT NULL default '0', 
 "cruser_id"   int NOT NULL default '0', 
 "title"   varchar(255) NOT NULL default '', 
 "url"   varchar(255) NOT NULL default '', 
 "ssl_check"   tinyint NOT NULL default '0', 
 "protocol" varchar CHECK ("protocol" IN ( '1','2' )) NOT NULL default '1',
 "type"   varchar(60) NOT NULL default '', 
 "login"   varchar(255) NOT NULL default '', 
 "password"   varchar(255) NOT NULL default '', 
 "offline"   tinyint NOT NULL default '0', 
 primary key ("uid"),
 "key"   parent (pid) 
);

CREATE SEQUENCE "tx_cmis_connection_uid_seq" ;

CREATE TABLE  "tx_cmis_connection" (
 "uid" integer DEFAULT nextval('"tx_cmis_connection_uid_seq"') NOT NULL,
 "pid"   int NOT NULL default '0', 
 "tstamp"   int NOT NULL default '0', 
 "crdate"   int NOT NULL default '0', 
 "cruser_id"   int NOT NULL default '0', 
 "user_id"   text NOT NULL, 
 "group_id"   text NOT NULL, 
 "server"   text NOT NULL, 
 "login"   varchar(255) NOT NULL default '', 
 "password"   varchar(255) NOT NULL default '', 
 primary key ("uid"),
 "key"   parent (pid) 
);

Kann mir jemand sagen wie ich die keys korrekt definiere? Und sind da sonst noch Fehler drin?

viele Grüße
Darko

Was macht KEY bei MySQL? Ein Index, oder? Erstell die einfach separat.

Was bei solchen Tools fehlt, ist die Intelligenz. Timestamps und Dates als INT zu speichern ist zensiert. Ich würde auch eher TEXT als VARCHAR(Länge) nehmen. Aber ich weiß nicht, ob Typo3 mit einem Feld crdate als DATE, oder tstamp als TIMESTAMP zurechtkommt.


Andreas

Key ist in MySQL nur ein Synonym für “INDEX”. Also einfach einen Index für die Spalten anlegen, z.B.

create index idx_parent on tx_cmis_server(pid)



Und sind da sonst noch Fehler drin?

z.B. das hier: “cruser_id” int NOT NULL default ‘0’

Ein Zeichen (‘0’) kann nicht als default für eine numerische Spalte verwendet werden. Das muss DEFAULT 0 (ohne die single quotes) sein

Ich würde die UID Spalte auch einfach als serial definieren, damit wird dann auch automatisch eine “Verbindung” zwischen der Spalte und der Sequence definiert.