2016-04-15 14 views
1

Wenn ich mein Skript teste, erhalte ich einen EOL-Fehler, aber ich sehe keinen Grund, warum ich diesen Fehler bekommen würde. Es gibt keine "Zeichen, keine Pfade, wo ich verdoppeln muss auf dem \ alles was ich denken kann ist, weil es mehrere Zeilen oder Leerzeichen ist? Wie kann ich dieses Skript ausführen, um meine SQL-Daten zu importieren ?, ohne alle Leerzeichen zu löschen und machen dies alle 1 Zeile?ironpython: "EOL" beim Scannen von Strings in Anführungszeichen und ungültige Syntax

ich dieses Skript auf einem anderen Forum gefunden, so habe ich es nicht schreiben.

import clr; 
import System; 

clr.AddReference("TCAdmin.DatabaseProviders.MySql"); 
clr.AddReference("TCAdmin.SDK"); 
from TCAdmin.DatabaseProviders.MySql import MySqlManager; 
from System import String; 

mysql_server= "localhost"; 
mysql_root= "root"; 
mysql_password= "Password"; 

with MySqlManager() as mysql: 
escapeduser=mysql.PrepareSqlValue(ThisService.Variables["MySQLUser"]); 
escapedpass=mysql.PrepareSqlValue(ThisService.Variables["MySQLPassword"]); 
mysql.Connect(String.Format("Data Source={0};User Id={1};Password={2};Pooling=False;", mysql_server, mysql_root, mysql_password)); 

mysql.ExecuteNonQuery(String.Format("DROP DATABASE IF EXISTS exile_{0};", escapeduser)); 
if mysql.Execute(String.Format("SELECT COUNT(*) as count FROM mysql.user WHERE user='{0}' AND host='localhost';", escapeduser)).Rows[0].Item[0] == 1 : 
mysql.ExecuteNonQuery(String.Format("DROP USER {0}@localhost;", escapeduser)); 

mysql.ExecuteNonQuery(String.Format("CREATE DATABASE exile_{0};", escapeduser)); 
mysql.ExecuteNonQuery(String.Format("GRANT ALL PRIVILEGES ON exile_{0}.* TO 'exile_{0}'@'localhost' IDENTIFIED BY '{1}';", escapeduser, escapedpass)); 
mysql.ExecuteNonQuery(String.Format("USE 'exile_{0}';", escapeduser)); 

mysql.ExecuteNonQuery(String.Format(" 
CREATE TABLE `account` (
`uid` varchar(32) NOT NULL, 
`clan_id` int(11) UNSIGNED DEFAULT NULL, 
`name` varchar(64) NOT NULL, 
`money` double NOT NULL DEFAULT '0', 
`score` int(11) NOT NULL DEFAULT '0', 
`kills` int(11) UNSIGNED NOT NULL DEFAULT '0', 
`deaths` int(11) UNSIGNED NOT NULL DEFAULT '0', 
`first_connect_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, 
`last_connect_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, 
`last_disconnect_at` datetime DEFAULT NULL, 
`total_connections` int(11) UNSIGNED NOT NULL DEFAULT '1' 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE `clan` (
`id` int(11) UNSIGNED NOT NULL, 
`name` varchar(64) NOT NULL, 
`leader_uid` varchar(32) NOT NULL, 
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, 
`insignia_texture` varchar(255) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE `construction` (
`id` int(11) UNSIGNED NOT NULL, 
`class` varchar(64) NOT NULL, 
`account_uid` varchar(32) NOT NULL, 
`spawned_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, 
`position_x` double NOT NULL DEFAULT '0', 
`position_y` double NOT NULL DEFAULT '0', 
`position_z` double NOT NULL DEFAULT '0', 
`direction_x` double NOT NULL DEFAULT '0', 
`direction_y` double NOT NULL DEFAULT '0', 
`direction_z` double NOT NULL DEFAULT '0', 
`up_x` double NOT NULL DEFAULT '0', 
`up_y` double NOT NULL DEFAULT '0', 
`up_z` double NOT NULL DEFAULT '0', 
`is_locked` tinyint(1) NOT NULL DEFAULT '0', 
`pin_code` varchar(6) NOT NULL DEFAULT '000000', 
`territory_id` int(11) UNSIGNED DEFAULT NULL, 
`last_updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE `container` (
`id` int(11) UNSIGNED NOT NULL, 
`class` varchar(64) NOT NULL, 
`spawned_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, 
`account_uid` varchar(32) DEFAULT NULL, 
`is_locked` tinyint(1) NOT NULL DEFAULT '0', 
`position_x` double NOT NULL DEFAULT '0', 
`position_y` double NOT NULL DEFAULT '0', 
`position_z` double NOT NULL DEFAULT '0', 
`direction_x` double NOT NULL DEFAULT '0', 
`direction_y` double NOT NULL DEFAULT '0', 
`direction_z` double NOT NULL DEFAULT '0', 
`up_x` double NOT NULL DEFAULT '0', 
`up_y` double NOT NULL DEFAULT '0', 
`up_z` double NOT NULL DEFAULT '1', 
`cargo_items` text NOT NULL, 
`cargo_magazines` text NOT NULL, 
`cargo_weapons` text NOT NULL, 
`cargo_container` text NOT NULL, 
`last_updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
`pin_code` varchar(6) NOT NULL DEFAULT '000000', 
`territory_id` int(11) UNSIGNED DEFAULT NULL, 
`abandoned` DATETIME DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; 

CREATE TABLE `player` (
`id` int(11) UNSIGNED NOT NULL, 
`name` varchar(64) NOT NULL, 
`account_uid` varchar(32) NOT NULL, 
`damage` double UNSIGNED NOT NULL DEFAULT '0', 
`hunger` double UNSIGNED NOT NULL DEFAULT '100', 
`thirst` double UNSIGNED NOT NULL DEFAULT '100', 
`alcohol` double UNSIGNED NOT NULL DEFAULT '0', 
`temperature` double NOT NULL DEFAULT '37', 
`wetness` double UNSIGNED NOT NULL DEFAULT '0', 
`oxygen_remaining` double UNSIGNED NOT NULL DEFAULT '1', 
`bleeding_remaining` double UNSIGNED NOT NULL DEFAULT '0', 
`hitpoints` varchar(255) NOT NULL DEFAULT '[]', 
`direction` double NOT NULL DEFAULT '0', 
`position_x` double NOT NULL DEFAULT '0', 
`position_y` double NOT NULL DEFAULT '0', 
`position_z` double NOT NULL DEFAULT '0', 
`spawned_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, 
`assigned_items` text NOT NULL, 
`backpack` varchar(64) NOT NULL, 
`backpack_items` text NOT NULL, 
`backpack_magazines` text NOT NULL, 
`backpack_weapons` text NOT NULL, 
`current_weapon` varchar(64) NOT NULL, 
`goggles` varchar(64) NOT NULL, 
`handgun_items` text NOT NULL, 
`handgun_weapon` varchar(64) NOT NULL, 
`headgear` varchar(64) NOT NULL, 
`binocular` varchar(64) NOT NULL, 
`loaded_magazines` text NOT NULL, 
`primary_weapon` varchar(64) NOT NULL, 
`primary_weapon_items` text NOT NULL, 
`secondary_weapon` varchar(64) NOT NULL, 
`secondary_weapon_items` text NOT NULL, 
`uniform` varchar(64) NOT NULL, 
`uniform_items` text NOT NULL, 
`uniform_magazines` text NOT NULL, 
`uniform_weapons` text NOT NULL, 
`vest` varchar(64) NOT NULL, 
`vest_items` text NOT NULL, 
`vest_magazines` text NOT NULL, 
`vest_weapons` text NOT NULL, 
`last_updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE `player_history` (
`id` int(11) UNSIGNED NOT NULL, 
`account_uid` varchar(32) NOT NULL, 
`name` varchar(64) NOT NULL, 
`died_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, 
`position_x` double NOT NULL, 
`position_y` double NOT NULL, 
`position_z` double NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE `territory` (
`id` int(11) UNSIGNED NOT NULL, 
`owner_uid` varchar(32) NOT NULL, 
`name` varchar(64) NOT NULL, 
`position_x` double NOT NULL, 
`position_y` double NOT NULL, 
`position_z` double NOT NULL, 
`radius` double NOT NULL, 
`level` int(11) NOT NULL, 
`flag_texture` varchar(255) NOT NULL, 
`flag_stolen` tinyint(1) NOT NULL DEFAULT '0', 
`flag_stolen_by_uid` varchar(32) DEFAULT NULL, 
`flag_stolen_at` datetime DEFAULT NULL, 
`flag_steal_message` varchar(255) DEFAULT NULL, 
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, 
`last_paid_at` datetime DEFAULT CURRENT_TIMESTAMP, 
`build_rights` varchar(640) NOT NULL DEFAULT '0', 
`moderators` varchar(320) NOT NULL DEFAULT '0' 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE `vehicle` (
`id` int(11) UNSIGNED NOT NULL, 
`class` varchar(64) NOT NULL, 
`spawned_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, 
`account_uid` varchar(32) DEFAULT NULL, 
`is_locked` tinyint(1) NOT NULL DEFAULT '0', 
`fuel` double UNSIGNED NOT NULL DEFAULT '0', 
`damage` double UNSIGNED NOT NULL DEFAULT '0', 
`hitpoints` text NOT NULL, 
`position_x` double NOT NULL DEFAULT '0', 
`position_y` double NOT NULL DEFAULT '0', 
`position_z` double NOT NULL DEFAULT '0', 
`direction_x` double NOT NULL DEFAULT '0', 
`direction_y` double NOT NULL DEFAULT '0', 
`direction_z` double NOT NULL DEFAULT '0', 
`up_x` double NOT NULL DEFAULT '0', 
`up_y` double NOT NULL DEFAULT '0', 
`up_z` double NOT NULL DEFAULT '1', 
`cargo_items` text NOT NULL, 
`cargo_magazines` text NOT NULL, 
`cargo_weapons` text NOT NULL, 
`cargo_container` text NOT NULL, 
`last_updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
`pin_code` varchar(6) NOT NULL DEFAULT '000000', 
`vehicle_texture` text NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

ALTERTABLE `account` 
ADD PRIMARY KEY (`uid`), 
ADD KEY `clan_id` (`clan_id`); 

ALTERTABLE `clan` 
ADD PRIMARY KEY (`id`), 
ADD KEY `leader_uid` (`leader_uid`); 

ALTERTABLE `construction` 
ADD PRIMARY KEY (`id`), 
ADD KEY `account_uid` (`account_uid`), 
ADD KEY `territory_id` (`territory_id`); 

ALTERTABLE `container` 
ADD PRIMARY KEY (`id`), 
ADD KEY `account_uid` (`account_uid`), 
ADD KEY `territory_id` (`territory_id`); 

ALTERTABLE `player` 
ADD PRIMARY KEY (`id`), 
ADD KEY `player_uid` (`account_uid`); 

ALTERTABLE `player_history` 
ADD PRIMARY KEY (`id`); 

ALTERTABLE `territory` 
ADD PRIMARY KEY (`id`), 
ADD KEY `owner_uid` (`owner_uid`), 
ADD KEY `flag_stolen_by_uid` (`flag_stolen_by_uid`); 

ALTERTABLE `vehicle` 
ADD PRIMARY KEY (`id`), 
ADD KEY `account_uid` (`account_uid`); 

ALTERTABLE `clan` 
MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT; 

ALTERTABLE `construction` 
MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT; 

ALTERTABLE `container` 
MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; 

ALTERTABLE `player` 
MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=34; 

ALTERTABLE `player_history` 
MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=21; 

ALTERTABLE `territory` 
MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4; 

ALTERTABLE `vehicle` 
MODIFY `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT; 

ALTERTABLE `account` 
ADD CONSTRAINT `account_ibfk_1` FOREIGN KEY (`clan_id`) REFERENCES `clan` (`id`) ON DELETE SET NULL; 

ALTERTABLE `clan` 
ADD CONSTRAINT `clan_ibfk_1` FOREIGN KEY (`leader_uid`) REFERENCES `account` (`uid`) ON DELETE CASCADE; 

ALTERTABLE `construction` 
ADD CONSTRAINT `construction_ibfk_1` FOREIGN KEY (`account_uid`) REFERENCES `account` (`uid`) ON DELETE CASCADE, 
ADD CONSTRAINT `construction_ibfk_2` FOREIGN KEY (`territory_id`) REFERENCES `territory` (`id`) ON DELETE CASCADE; 

ALTERTABLE `container` 
ADD CONSTRAINT `container_ibfk_1` FOREIGN KEY (`account_uid`) REFERENCES `account` (`uid`) ON DELETE CASCADE, 
ADD CONSTRAINT `container_ibfk_2` FOREIGN KEY (`territory_id`) REFERENCES `territory` (`id`) ON DELETE CASCADE; 

ALTERTABLE `player` 
ADD CONSTRAINT `player_ibfk_1` FOREIGN KEY (`account_uid`) REFERENCES `account` (`uid`) ON DELETE CASCADE; 


ALTERTABLE `territory` 
ADD CONSTRAINT `territory_ibfk_1` FOREIGN KEY (`owner_uid`) REFERENCES `account` (`uid`) ON DELETE CASCADE, 
ADD CONSTRAINT `territory_ibfk_2` FOREIGN KEY (`flag_stolen_by_uid`) REFERENCES `account` (`uid`) ON DELETE SET NULL; 

ALTERTABLE `vehicle` 
ADD CONSTRAINT `vehicle_ibfk_1` FOREIGN KEY (`account_uid`) REFERENCES `account` (`uid`) ON DELETE CASCADE;", escapeduser)); 
+0

Diese Frage ist nicht von großer Qualität. Das Codebeispiel ist nicht richtig eingerückt, zu lang und der angezeigte Fehler gibt Ihnen wahrscheinlich auch eine Zeilennummer. –

+0

Ich schätze das Feedback. Ich bin kein Programmierer, wie Sie sehen können, einfach versuchen, das Skript in meinem tcadmin, das ich hosten, hinzuzufügen. Ich benutze Editor zur Bearbeitung. Gibt es ein besseres Programm, das Code automatisch mit den Einrückungen formatiert, wie Sie sagten? –

Antwort

0

Das Problem ist ungültig Verwendung eines mehrzeiligen String. In Python Sie dreifache Anführungszeichen verwenden könnte um zu erreichen, was Sie versuchen. Ein abgekürztes Beispiel würde aussehen:

mysql.ExecuteNonQuery(String.Format(""" 
CREATE TABLE `account` (
`uid` varchar(32) NOT NULL, 
`clan_id` int(11) UNSIGNED DEFAULT NULL, 
`name` varchar(64) NOT NULL, 
`money` double NOT NULL DEFAULT '0', 
`score` int(11) NOT NULL DEFAULT '0', 
`kills` int(11) UNSIGNED NOT NULL DEFAULT '0', 
`deaths` int(11) UNSIGNED NOT NULL DEFAULT '0', 
`first_connect_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, 
`last_connect_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, 
`last_disconnect_at` datetime DEFAULT NULL, 
`total_connections` int(11) UNSIGNED NOT NULL DEFAULT '1' 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
""", escapeduser)); 
+0

danke, das scheint die Fehler behoben zu haben, sobald ich richtig eingerückt bin und die dreifachen Anführungszeichen hinzugefügt habe. –

+0

Das Problem, das ich jetzt habe ist, wenn ich das Skript ausführen, erhalte ich den Fehler: Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe von "2" in Zeile 1 entspricht –

+0

TCAdmin.SDK.Database.DatabaseException: Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version entspricht, um die richtige Syntax für die Verwendung von '2' in Zeile 1 zu verwenden. ---> Sie haben einen Fehler in Ihrer SQL-Syntax. Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, damit die richtige Syntax in der Nähe von '2' in Zeile 1 verwendet werden kann --- Ende der inneren Ausnahmestapelspur --- –