BG Development · За реклама · За контакти | Помощ Търсене Потребители Календар Правила |
Здравей! ( Включване | Регистриране ) |
Страници: (2) [1] 2 ( Първото ново мнение ) |
Бай Аз |
Публикувано на: 22-11-2022, 14:31
|
Име: Група: Потребител Ранг: Редовен член Мнения: 351 Регистриран на: 04.02.21 |
Здравейте! Направих си един проект с Lazarus и база данни SQLite, и всичко си работи чудесно. Преработих го малко, така че да се свързва с база данни MySQL, но по никакъв начин не мога да се свържа с базата данни. Опитах много варианти, четох из нета, но нищо! Ползвах отначало XAMPP, после WAMP, накрая опитах и директно с MySQL 8 и WorkBench, но нищо. Просто не мога да разбера какъв трябва да бъде точния синтаксис на връзката с базата данни. Примерно имам база данни: base1 Какво трябва да напиша в полето на Lazarus(или на Delphi) DataBaseName? Пробвах: base1, base1.db, localhost\base1, localhost\base1.db, 127.0.0.1\base1, 127.0.0.1\base1.db, MySQL\base1, MySQL\base1.db.... и какво ли още не, и нищо! Знам, че тук има хора работили с MySqli и с Delphi, така че, моля, ако някой може да помогне - нека го направи! Желая на всички приятен и весел ден! |
thrawn |
Публикувано на: 22-11-2022, 14:45
|
Име: Група: Потребител Ранг: Почетен член Мнения: 3711 Регистриран на: 17.01.17 |
Пробвай се да зададеш грамотно въпроса. Какво е това "поле". Конфигурация на някакъв контрол?
Това "нищо не става" също не помага... MySQL е сървър. Като начало, трябва да го инсталираш и стартиран някъде. Това направено ли е? По подразбиране, сървърът слуша на localhost:3306, ако ще го ползваш от друга машина (или на друг адрес) то трябва да го конфигурираш да слуша за заявки от вън. Също така, когато добавяш потребител, трябва да му разрешиш да се логва от съответния хост. Ако всичко е направено, тестваш с конзолния клиент: mysql -h localhost -u root -p database_name и казваш какво се получава... |
Бай Аз |
Публикувано на: 22-11-2022, 14:59
|
Име: Група: Потребител Ранг: Редовен член Мнения: 351 Регистриран на: 04.02.21 |
Това е поле, в което се задава името на базата данни, но в случая мисля, че трябва да се зададе пълния път до базата. Да, инсталирах MySQL по три начина чрез XAMPP, WAMP и самостоятелно заедно с MySql WorkBench. Създал съм си базата данни чрез PHPMyAdmin (и чрез MySql WorkBench) Имам в нея три таблици, засега празни, те се попълват с данни в приложението. Всичко работи, с потребител root и без парола. Създал съм и един потребител с парола root. Влизам и всичко е ОК. Засега ще го ползвам на локалния хост. Ще пробвам с тази команда довечера и ще пиша какво е станало! Това мнение е било редактирано от Бай Аз на 22-11-2022, 15:17 |
rvc |
Публикувано на: 22-11-2022, 15:17
|
Име: Група: Потребител Ранг: Почетен член Мнения: 2647 Регистриран на: 13.05.11 |
screenshots също ще помогнат за разбиране на проблема.
|
Бай Аз |
Публикувано на: 22-11-2022, 15:30
|
Име: Група: Потребител Ранг: Редовен член Мнения: 351 Регистриран на: 04.02.21 |
Довечера ще сложа screenshot.
Накратко проблемът е, че не мога да разбера какъв е пълния път до базата ми данни, която е на localhost на XAMPP или WAMP сървъри.(или в третия вариант с MySql WorkBench - не знам къде е точно) Това мнение е било редактирано от Бай Аз на 22-11-2022, 15:31 |
Бай Аз |
Публикувано на: 23-11-2022, 08:42
|
Име: Група: Потребител Ранг: Редовен член Мнения: 351 Регистриран на: 04.02.21 |
Здравейте, не успях снощи и затова пиша сега. Thrawn, пробвах тия команди, но абсолютно нищо не излиза, курсорът преминава на следващия ред и толкова. Прилагам снимки на екрана: Полето DataBaseName е част от свойствата на конектора за свързване с базата данни. Значи при SQLite в полето DataBaseName се пише името на базата ни, заедно с разширението, и то когато базата ни се намира в директорията на проекта. Значи там пиша в DataBaseName: new_base.db Ако базата ми се намира другаде, пиша пълния път до нея. Сега тук би трябвало да е същото, но не става. Затова питам, ако някой е ползвал Delphi и MySql на localhost, да напише как се е свързвал с базата си. |
thrawn |
Публикувано на: 23-11-2022, 11:15
|
Име: Група: Потребител Ранг: Почетен член Мнения: 3711 Регистриран на: 17.01.17 |
това което показваш в първата снимка е mysql.exe (даже си го пише в заглавната лента на прозореца). Това е конзолен клиент за mysql. Ти го стартираш директно от шорткът в windows.
Както и да е. Когато работиш с mysql (и не само де), за база данни се ползва само нейното име. Къде се намира физически не е работа на клиентът да знае. Та за да се свържеш, попълваш името на базата данни. За хост пиши localhost (с 127.0.0.1 може да не ти позволи да се логнеш). Потребителското име и паролата (казваш, че си използвал root за потребителско име без парола, но на снимката се вижда, че има въведена такава). С тези данни би трябвало да се свържеш. За тест, дали данните са коерктни, се ползва стандартния конзолен клиент на mysql (mysql.exe - пуска се от CMD за да не си зависим от параметрите които му се подават при стартиране от шорткътите на черчавето). ---- Опционално (всъщност, приеми го за задължително) задай и кодова таблица - полето charset на контрола. Също така, когато правиш бази данни посочвай изрично кодовата таблица - единствения правилен избор е utf-8. |
Бай Аз |
Публикувано на: 23-11-2022, 11:46
|
Име: Група: Потребител Ранг: Редовен член Мнения: 351 Регистриран на: 04.02.21 |
Thrawn, благодаря много за насоките!
В общи линии аз правя това, което си написал, просто опитах много варианти и на снимката е останал този, в който сложих парола и на root акаунта. Първият вариант, който написах бе с localhost и името на базата ми - но не стана. Ще оправя колацията на базата както казваш, защото съм писал с-1251. И ще пробвам да достъпя базата и през конзолата. В краен случай ще пробвам и с PostgreSQL, за да видя дали не е проблема в конектора към базата. Това мнение е било редактирано от Бай Аз на 23-11-2022, 11:47 |
thrawn |
Публикувано на: 23-11-2022, 12:26
|
Име: Група: Потребител Ранг: Почетен член Мнения: 3711 Регистриран на: 17.01.17 |
Колация и кодова таблица нямат нищо общо!
Когато правиш база данни я създавай винаги в utf-8. А когато се свързваш с нея задавай кодова таблица която се поддържа от клиента който използваш (това делфи нещо не ми вдъхва много доверие, та ако не работи добре с utf-8 то използвай cp1251, но първо го тествай с utf-8 как е) |
Бай Аз |
Публикувано на: 25-11-2022, 10:01
|
Име: Група: Потребител Ранг: Редовен член Мнения: 351 Регистриран на: 04.02.21 |
Здравейте! Успях, слава Богу! А вече няколко дни се мъчих с това свързване! Ключът се оказа в точната динамична библиотека (libmysql.dll), която трябва да поставим в папката(директорията) на проекта. А тази библиотека я вземаме от папката където сме инсталирали MySQL - от папката Lib. Библиотеката за последната версия на MySQL е версия 8.0.31.(Версиите трябва да съвпадат) Второто важно нещо - не успях да се свържа чрез сървърите XAMPP и WAMP. Успях чрез пряка инсталация на MySQL и направих базата данни чрез Workbench и SQL заявки. Ето какво написах в MySQL80Connection1: DataBaseName: new_base Host: localhost Port: 3306 Pasword: root UserName: root Интересно, че последният ключов момент беше вчера вечерта, когато реших да гледам едно видео - как се свърват с MySql в Delphi, и там човекът показа това за динамичната библиотека. И това ми помогна да стигна до решението! Желая на всички приятен ден и всичко най-добро! Това мнение е било редактирано от Бай Аз на 25-11-2022, 10:14 |
Страници: (2) [1] 2 |