2016-09-03 1 views
-1

Я использую сценарий ниже для установки mysql с моим приложением, но всегда не удается создать базу данных и загрузить сценарий базы данных. Отладчик возвращает код ошибки 1, я не нахожу другого сообщения о причине сбоя где-нибудьсоздать базу данных mysql inno setup возвращает код ошибки 1

Когда я проверяю средство просмотра событий, он видел, что сервис успешно создан и запущен, что верно, но я не понимаю, почему база данных не создается.

[Run] 
;------------------install service MySQL -------------------------------- 
;Filename: "{app}\mysql\bin\mysqld.exe"; Parameters: "--install"; WorkingDir: "{app}\mysql\bin"; StatusMsg: "Installing the MySQL"; Description: "Installing MySQL"; Flags: runhidden; Check: MySQL_Is; 
Filename: msiexec; Parameters: "/i ""{app}\mysql-5.5.11-win32.msi"" /qn INSTALLDIR=""{app}\mysql"" DATADIR=""{app}\mysql\data"" "; WorkingDir:{app}; StatusMsg: Please wait while we install; Flags: runhidden 

;---------------------CONFIGURING ---------------------------- 
Filename: {app}\mysql\bin\MySQLInstanceConfig.exe; Parameters:"-i -q ""-l{app}\mysql\mysql_install_log.txt"" ""-nMySQL Server 5.5"" ""-p{app}\mysql"" -v5.5.23 ""-t{app}\mysql\my-template.ini"" ""-c{app}\mysql\mysql.ini"" ServerType=SERVER DatabaseType=MIXED Port=3311 StrictMode=yes ConnectionCount=15 Charset=utf8 ServiceName=MySQL55 AddBinToPath=yes RootPassword=root4u SkipNetworking=no"; WorkingDir: {app}; StatusMsg: Configuring MySQL services; Description: Configuring MySQL Service; Flags: runhidden 


;--------------------- load Database script 

;Filename: "{app}\mysql\bin\mysql.exe"; Parameters: "-u root -proot4u -h localhost -e ""source {app}\items_db.sql"""; WorkingDir: {app}; StatusMsg: Loading Database Initial Data; Flags: runhidden waituntilterminated; 

Filename: {app}\{#AppExeName}; Description: {cm:LaunchProgram,{#AppName}}; Flags: nowait postinstall skipifsilent 

[UninstallRun] 
Filename: {sys}\net.exe; Parameters: "stop ""MySQL55"""; StatusMsg: "Stopping MySQL Service ..."; Flags: runhidden; 
Filename: "{app}\mysql\bin\mysqld.exe"; Parameters: "remove ""MySQL55"""; StatusMsg: "Deleting MySQL Service ..."; Flags: runhidden; 
Filename: msiexec; Parameters: "/x ""{app}\mysql-5.5.11-win32.msi"" "; 

========================= Сценарий базы данных ==============

/* Tables */ 
DROP TABLE IF EXISTS clothes; 

CREATE TABLE clothes (
    id int AUTO_INCREMENT NOT NULL, 
    name varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci, 
    PRIMARY KEY (id) 
) ENGINE = MyISAM; 

Insert Into clothes (Id,Name) values (1,"Shirt"); 
+0

Пожалуйста, прекратить размещение этих плохих вопросов. Это третий подряд. Ни то, ни другое, вы потрудились протестировать автономную команду и проверить результаты. Оба предыдущих вопроса не имели ничего общего с Inno Setup. Оба раза, это была команда или ее исходные данные, которые были плохими. Если бы вы запустили автономную команду, вы увидите сообщения об ошибках или другие признаки проблемы. –

+0

было бы проще указать, что это ошибка команды, и укажите это. Если у меня будет ответ, как вы думаете, я бы спросил? – Smith

+0

Вы должны спросить только после того, как вы действительно проверите команду в командной строке. Что вы не делали, как четко показывает ваш ответ. Надеюсь, вы наконец поняли это, и вы не зададите еще один вопрос, например: «Моя команда не работает в Inno Setup, я не знаю, почему» *, когда фактическая проблема равна * «моя команда не работает в все, и я даже не потрудился протестировать его по команде, например, где я увижу фактическое сообщение об ошибке, которое поможет мне отладить его »*. –

ответ

0

Так после нескольких часов отладки и поиска в Интернете, я нашел странное поведение

MySQL не допускает люфт в параметре путь источника при выполнении из операторов SQL из файла.

;Filename: "{app}\mysql\bin\mysql.exe"; Parameters: "-u root -proot4u -h localhost -e ""source {app}\items_db.sql"""; WorkingDir: {app}; StatusMsg: Loading Database Initial Data; Flags: runhidden waituntilterminated; 

так я начал искать пути вокруг этого

;Filename: "{app}\mysql\bin\mysql.exe"; Parameters: "-u root -proot4u -h localhost -e ""source {app}\{code:GetScriptData}"""; WorkingDir: {app}; StatusMsg: Loading Database Initial Data; Flags: runhidden waituntilterminated; 

и в секции кода

[Code] 
function GetScriptData(Value: string): string; 
begin 
    Result := ExpandConstant('{app}') +'/items_db.sql'; 
    StringChangeEx(Result, '\', '/', True); 
end;