BG Development


Страници: (2) [1] 2   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Проблем при връзка с MySQL, Не мога да се свържа с базата от данни
Бай Аз
Публикувано на: 22-11-2022, 14:31
Quote Post



Име:
Група: Потребител
Ранг: Посетител

Мнения: 70
Регистриран на: 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, така че, моля, ако някой може да помогне - нека го направи!

Желая на всички приятен и весел ден!
PMEmail Poster
Top
thrawn
Публикувано на: 22-11-2022, 14:45
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3388
Регистриран на: 17.01.17



Пробвай се да зададеш грамотно въпроса. Какво е това "поле". Конфигурация на някакъв контрол?

Това "нищо не става" също не помага...

MySQL е сървър. Като начало, трябва да го инсталираш и стартиран някъде. Това направено ли е? По подразбиране, сървърът слуша на localhost:3306, ако ще го ползваш от друга машина (или на друг адрес) то трябва да го конфигурираш да слуша за заявки от вън. Също така, когато добавяш потребител, трябва да му разрешиш да се логва от съответния хост.

Ако всичко е направено, тестваш с конзолния клиент: mysql -h localhost -u root -p database_name и казваш какво се получава...
PMEmail Poster
Top
Бай Аз
Публикувано на: 22-11-2022, 14:59
Quote Post



Име:
Група: Потребител
Ранг: Посетител

Мнения: 70
Регистриран на: 04.02.21




Това е поле, в което се задава името на базата данни, но в случая мисля, че трябва да се зададе пълния път до базата.

Да, инсталирах MySQL по три начина чрез XAMPP, WAMP и самостоятелно заедно с MySql WorkBench. Създал съм си базата данни чрез PHPMyAdmin (и чрез MySql WorkBench)
Имам в нея три таблици, засега празни, те се попълват с данни в приложението.
Всичко работи, с потребител root и без парола. Създал съм и един потребител с парола root. Влизам и всичко е ОК.

Засега ще го ползвам на локалния хост.

Ще пробвам с тази команда довечера и ще пиша какво е станало!

Това мнение е било редактирано от Бай Аз на 22-11-2022, 15:17
PMEmail Poster
Top
rvc
Публикувано на: 22-11-2022, 15:17
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2622
Регистриран на: 13.05.11



screenshots също ще помогнат за разбиране на проблема.
PMEmail PosterUsers Website
Top
Бай Аз
Публикувано на: 22-11-2022, 15:30
Quote Post



Име:
Група: Потребител
Ранг: Посетител

Мнения: 70
Регистриран на: 04.02.21



Довечера ще сложа screenshot.

Накратко проблемът е, че не мога да разбера какъв е пълния път до базата ми данни, която е на localhost на XAMPP или WAMP сървъри.(или в третия вариант с MySql WorkBench - не знам къде е точно)

Това мнение е било редактирано от Бай Аз на 22-11-2022, 15:31
PMEmail Poster
Top
Бай Аз
Публикувано на: 23-11-2022, 08:42
Quote Post



Име:
Група: Потребител
Ранг: Посетител

Мнения: 70
Регистриран на: 04.02.21




Здравейте, не успях снощи и затова пиша сега.

Thrawn, пробвах тия команди, но абсолютно нищо не излиза, курсорът преминава на следващия ред и толкова. Прилагам снимки на екрана:

user posted image

user posted image

user posted image

Полето DataBaseName е част от свойствата на конектора за свързване с базата данни.
Значи при SQLite в полето DataBaseName се пише името на базата ни, заедно с разширението, и то когато базата ни се намира в директорията на проекта.

Значи там пиша в DataBaseName: new_base.db
Ако базата ми се намира другаде, пиша пълния път до нея.

Сега тук би трябвало да е същото, но не става.

Затова питам, ако някой е ползвал Delphi и MySql на localhost, да напише как се е свързвал с базата си.
PMEmail Poster
Top
thrawn
Публикувано на: 23-11-2022, 11:15
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3388
Регистриран на: 17.01.17



това което показваш в първата снимка е mysql.exe (даже си го пише в заглавната лента на прозореца). Това е конзолен клиент за mysql. Ти го стартираш директно от шорткът в windows.

Както и да е.

Когато работиш с mysql (и не само де), за база данни се ползва само нейното име. Къде се намира физически не е работа на клиентът да знае.
Та за да се свържеш, попълваш името на базата данни. За хост пиши localhost (с 127.0.0.1 може да не ти позволи да се логнеш). Потребителското име и паролата (казваш, че си използвал root за потребителско име без парола, но на снимката се вижда, че има въведена такава). С тези данни би трябвало да се свържеш.

За тест, дали данните са коерктни, се ползва стандартния конзолен клиент на mysql (mysql.exe - пуска се от CMD за да не си зависим от параметрите които му се подават при стартиране от шорткътите на черчавето).

----
Опционално (всъщност, приеми го за задължително) задай и кодова таблица - полето charset на контрола. Също така, когато правиш бази данни посочвай изрично кодовата таблица - единствения правилен избор е utf-8.
PMEmail Poster
Top
Бай Аз
Публикувано на: 23-11-2022, 11:46
Quote Post



Име:
Група: Потребител
Ранг: Посетител

Мнения: 70
Регистриран на: 04.02.21



Thrawn, благодаря много за насоките!

В общи линии аз правя това, което си написал, просто опитах много варианти и на снимката е останал този, в който сложих парола и на root акаунта.

Първият вариант, който написах бе с localhost и името на базата ми - но не стана.

Ще оправя колацията на базата както казваш, защото съм писал с-1251.
И ще пробвам да достъпя базата и през конзолата.

В краен случай ще пробвам и с PostgreSQL, за да видя дали не е проблема в конектора към базата.

Това мнение е било редактирано от Бай Аз на 23-11-2022, 11:47
PMEmail Poster
Top
thrawn
Публикувано на: 23-11-2022, 12:26
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3388
Регистриран на: 17.01.17



Колация и кодова таблица нямат нищо общо!

Когато правиш база данни я създавай винаги в utf-8. А когато се свързваш с нея задавай кодова таблица която се поддържа от клиента който използваш (това делфи нещо не ми вдъхва много доверие, та ако не работи добре с utf-8 то използвай cp1251, но първо го тествай с utf-8 как е)
PMEmail Poster
Top
Бай Аз
Публикувано на: 25-11-2022, 10:01
Quote Post



Име:
Група: Потребител
Ранг: Посетител

Мнения: 70
Регистриран на: 04.02.21




Здравейте!

Успях, слава Богу! icon_smile.gif А вече няколко дни се мъчих с това свързване!

Ключът се оказа в точната динамична библиотека (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
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) [1] 2  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0