Delphi Firedac не распознает новую функцию ALTER в sqlite3 - PullRequest
0 голосов
/ 29 апреля 2019

SQLite3 версии 3.25 и выше позволяет мне "ALTER TABLE myTable RENAME COLUMN oldColName TO newColName".Но я получаю сообщение об ошибке "near RENAME", когда выполняю это в своем коде Delphi, но он работает при запуске нового sqlite3.dll из командной строки или с помощью другой утилиты.

Это работает:

HerdConnection.ExecSQL('ALTER TABLE myTable RENAME TO NewNameTable');

Сбой:

HerdConnection.ExecSQL('ALTER TABLE myTable RENAME COLUMN oldcolName TO NewColName');

Поскольку я установил новый драйвер sqlite3.dll, переименование столбца работает, но НЕ в моем Delphi-коде (Delphi 10.2 Update 2)

Я подозреваю, что включенный драйвер sqlite3 с FireDac не обновлен, но везде на компьютере я нашел новейший файл sqlite3.dll, который я могу найти.

Ответы [ 2 ]

1 голос
/ 29 апреля 2019

Возможно, вы используете FireDAC со статической связью SQLite по умолчанию.Статическое связывание на основе двоичных файлов SQLite v 3.9.2.Если вы хотите использовать последнюю версию SQLite, вам нужно переключиться на динамическое связывание.Точные инструкции находятся по ссылке Подключение к базе данных SQLite (FireDAC)

0 голосов
/ 25 июля 2019

Проблема заключается в том, что после изменения файла FireDac.inc ничего не меняется, потому что компилятор использует файлы Delphi .DCP, а не файлы .pas У меня есть решение, я просто сделаю это, пожалуйста, выполните следующие действия:

0-close delphi .
1- go to (C:\Program Files (x86)\Embarcadero\Studio\19.0\source\data\firedac) open FireDac.inc then remove (.) from line ({.$UNDEF FireDAC_SQLITE_STATIC}) then save it.
2- download the lase version of Sqlite3.dll .
3- go to (C:\Program Files\Embarcadero\Studio\20.0\bin)and replacing the old sqlite3.dll.   4- go to your application exe folder and past the sqlite3.dll . 
5- open delphi and make new vcl application (debudg build) name it (myfire) and save it in new folder name it (fires).
6-go to (C:\Program Files\Embarcadero\Studio\20.0\source\data\firedac) and copy the following files to the (fires) folder :
a-FireDAC.Comp.BatchMove.SQL.pas
b-FireDAC.Phys.SQLite.pas
c-FireDAC.Phys.SQLiteCli.pas
d-FireDAC.Phys.SQLiteDef.pas
e-FireDAC.Phys.SQLiteMeta.pas
f-FireDAC.Phys.SQLiteVDataSet.pas
g-FireDAC.Phys.SQLiteWrapper.pas
h-FireDAC.Stan.SQLTimeInt.pas
i-FireDAC.Phys.SQLGenerator.pas
j-FireDAC.Phys.SQLPreprocessor.pas
7- add those file to (myfire) project and compile the project and close delphi.
8- go to your exe folder you will see .DCP files have the same name of 10 files you added before. 
9- copy those 10 .DCP files and past them in 
(C:\Program Files\Embarcadero\Studio\20.0\lib\win32\debug).
10-make the same steps form step 5 to 9 for (release build).
11-open delphi to your main project and recompile it then try (RENAME COLUMN) it will be work. 
...