4.1.11 - Tabellen in 3.23.58 -Datenbank exportieren (???)
Josef Reichardt
- datenbank
0 wahsaga
Hallo!
Ich habe lokal auf einem privaten (Netzwerkinternen) Webserver eine PHP-Seite in Verbindung mit MySQL aufgebaut.
Die Seite ist nun fertig, und ich wollte sie auf den "echten" Webserver laden.
Dabei treten immer wieder Fehler auf!
Da es 10 Tabellen sind mit relativ vielen Spalten will ich sie nicht manuell anlegen müssen!
Ich kann auf meinem lokelen Server (MySQL 4.1.11 mit phpMyAdmin 2.6.1-pl3) die Tabellen exportieren (in Form von Text oder Datei) aber wenn ich das dann im neuen Server (MySQL 3.23.58 mit phpMyAdmin 2.5.7-pl1)importiere, kommt folgende Fehlermeldung:
#1064 - You have an error in your SQL syntax near 'collate latin1_general_ci default NULL,
realname
varchar(150) collate latin' at line 3
Ich gehe mal davon aus, das sich der SQL syntax geändert hat.
Die Befehle, die auf dem neuen Server ausgeführt werden sollen, sind folgende (DB habe ich manuell erstellt):
CREATE TABLE news (
ID INT AUTO_INCREMENT,
Titel VARCHAR(100),
Autor VARCHAR(100),
Inhalt TEXT,
Datum VARCHAR(100)
);
CREATE TABLE guestbook (
ID INT AUTO_INCREMENT,
name VARCHAR(100),
email VARCHAR(100),
eintrag TEXT,
datum VARCHAR(100)
);
CREATE TABLE links (
ID INT AUTO_INCREMENT,
titel VARCHAR(150),
url VARCHAR(150),
img VARCHAR(200),
name VARCHAR(100),
email VARCHAR(100)
);
CREATE TABLE friends (
ID INT AUTO_INCREMENT,
name VARCHAR(100),
realname VARCHAR(150),
email VARCHAR(100),
homepage VARCHAR(100),
plz VARCHAR(5),
ort VARCHAR(100),
adresse VARCHAR(150),
geb VARCHAR(10),
flocation VARCHAR(100),
fmusic VARCHAR(100),
fdrink VARCHAR(100),
hobbies TEXT,
motto TEXT
);
CREATE TABLE minibbtable_banned (
id int(10) NOT NULL auto_increment,
banip varchar(15) NOT NULL default '',
PRIMARY KEY(id)
) TYPE=MYISAM;
CREATE TABLE minibbtable_forums (
forum_id int(10) NOT NULL auto_increment,
forum_name varchar(150) NOT NULL default '',
forum_desc text NOT NULL,
forum_order int(10) NOT NULL default '0',
forum_icon varchar(255) NOT NULL default 'default.gif',
topics_count int(10) NOT NULL default '0',
posts_count int(10) NOT NULL default '0',
forum_group varchar(150) not null default '',
PRIMARY KEY(forum_id)
) TYPE=MYISAM;
CREATE TABLE minibbtable_posts (
post_id int(10) NOT NULL auto_increment,
forum_id int(10) NOT NULL default '1',
topic_id int(10) NOT NULL default '1',
poster_id int(10) NOT NULL default '0',
poster_name varchar(40) NOT NULL default 'Anonymous',
post_text text NOT NULL,
post_time datetime NOT NULL default '0000-00-00 00:00:00',
poster_ip varchar(15) NOT NULL default '',
post_status tinyint(1) NOT NULL default '0',
PRIMARY KEY(post_id),
KEY post_id (post_id),
KEY forum_id (forum_id),
KEY topic_id (topic_id),
KEY poster_id (poster_id),
KEY poster_ip (poster_ip)
) TYPE=MYISAM;
CREATE TABLE minibbtable_send_mails (
id int(11) NOT NULL auto_increment,
user_id int(11) NOT NULL default '1',
topic_id int(11) NOT NULL default '0',
PRIMARY KEY(id),
KEY topic_id (topic_id),
KEY user_id (user_id)
) TYPE=MYISAM;
CREATE TABLE minibbtable_topics (
topic_id int(10) NOT NULL auto_increment,
topic_title varchar(100) NOT NULL default '',
topic_poster int(10) NOT NULL default '0',
topic_poster_name varchar(40) NOT NULL default 'Anonymous',
topic_time datetime NOT NULL default '0000-00-00 00:00:00',
topic_views int(10) default '0' not null,
forum_id int(10) NOT NULL default '1',
topic_status tinyint(1) NOT NULL default '0',
topic_last_post_id int(10) NOT NULL default '1',
posts_count int(10) NOT NULL default '0',
sticky int(1) NOT NULL default '0',
topic_last_post_time datetime not null,
PRIMARY KEY(topic_id),
KEY topic_id (topic_id),
KEY forum_id (forum_id),
KEY topic_last_post_id (topic_last_post_id),
KEY sticky (sticky),
KEY posts_count (posts_count),
KEY topic_last_post_time (topic_last_post_time),
KEY topic_views (topic_views)
) TYPE=MYISAM;
CREATE TABLE minibbtable_users (
user_id int(10) NOT NULL auto_increment,
username varchar(40) NOT NULL default '',
user_regdate datetime NOT NULL default '0000-00-00 00:00:00',
user_password varchar(32) NOT NULL default '',
user_email varchar(50) NOT NULL default '',
user_icq varchar(50) NOT NULL default '',
user_website varchar(100) NOT NULL default '',
user_occ varchar(100) NOT NULL default '',
user_from varchar(100) NOT NULL default '',
user_interest varchar(150) NOT NULL default '',
user_viewemail tinyint(1) NOT NULL default '0',
user_sorttopics tinyint(1) NOT NULL default '1',
user_newpwdkey varchar(32) NOT NULL default '',
user_newpasswd varchar(32) NOT NULL default '',
language char(3) NOT NULL default '',
num_topics INT(10) UNSIGNED DEFAULT '0' NOT NULL,
num_posts INT(10) UNSIGNED DEFAULT '0' NOT NULL,
activity int(1) NOT NULL default '1',
user_custom1 varchar(255) NOT NULL default '',
user_custom2 varchar(255) NOT NULL default '',
user_custom3 varchar(255) NOT NULL default '',
PRIMARY KEY(user_id)
) TYPE=MYISAM;
Vielleicht hat ja schon mal jemand Probleme damit gehabt.
Bin für jeden Tip Dankbar!
greetz
Sepp
hi,
#1064 - You have an error in your SQL syntax near 'collate latin1_general_ci default NULL,
realname
varchar(150) collate latin' at line 3Die Befehle, die auf dem neuen Server ausgeführt werden sollen, sind folgende
ich kann darin überhaupt kein "collate" finden.
bist du sicher, dass das die exakten SQL-anweisungen sind, die zur zitierten fehlermeldung gehören?
gruß,
wahsaga
Hi!
Erst mal danke für die schnelle Antwort!
bist du sicher, dass das die exakten SQL-anweisungen sind, die zur zitierten fehlermeldung gehören?
Sorry, du hast recht! Die Fehlermeldung gehört zu dem text, den mir mein phpMyAdmin ausegegeben hat (über den Befehl exportieren)!
Der SQL-Code, den ich geschrieben habe, führt dazu:
#1075 - Incorrect table definition; There can only be one auto column and it must be defined as a key
greetz
sepp
hi,
#1075 - Incorrect table definition; There can only be one auto column and it must be defined as a key
gut, dann solltest du ja wissen, was bei
CREATE TABLE news (
ID INT AUTO_INCREMENT,
Titel VARCHAR(100),
Autor VARCHAR(100),
Inhalt TEXT,
Datum VARCHAR(100)
);
falsch ist.
There can only be one auto column
ja OK, ist nur eine.
and it must be defined as a key
aber sie als KEY definiert hast du da nicht.
gruß,
wahsaga
Hi!
Stimmt, es hat nur am "PRIMARY KEY" gelegen!
Ich hab jetzt aus dem
CREATE TABLE news (
ID INT AUTO_INCREMENT,
Titel VARCHAR(100),
Autor VARCHAR(100),
Inhalt TEXT,
Datum VARCHAR(100)
);
folgendes gemacht:
CREATE TABLE news (
ID INT AUTO_INCREMENT PRIMARY KEY,
Titel VARCHAR(100),
Autor VARCHAR(100),
Inhalt TEXT,
Datum VARCHAR(100)
);
Und schon funktioniert es einwandfrei!
Danke!
greetz
Sepp
hi,
Stimmt, es hat nur am "PRIMARY KEY" gelegen!
ja, fehlermeldungen können manchmal durchaus hilfreiche informationen enthalten.
gruß,
wahsaga
Grundlage für Zitat #179.
Moin!
Der SQL-Code, den ich geschrieben habe, führt dazu:
#1075 - Incorrect table definition; There can only be one auto column and it must be defined as a key
Schätze, du hast zwei Möglichkeiten:
1. Entweder legst du deine Tabellen manuell nochmal unter MySQL 3.23 neu an. Dann sollten keine Probleme auftreten, und so aufwendig (im Vergleich zur zweiten Möglichkeit) ist das auch nicht.
2. Du bearbeitest so lange deine exportierten SQL-Statements, bis MySQL sie akzeptiert.
Aktuell hast du jedenfalls das Problem, dass einige deiner Tabellen zwar auto_increment als Spaltenattribut enthalten, aber diese Spalte kein PRIMARY KEY ist. Und das beißt sich offenbar.