Что нового

Работа с базой MySQL

XpycT

Скриптер
Сообщения
380
Репутация
133
Bloodrinker [?]
Кстати почему у меня такая ошибка при выходе? кто знает?
А что у тебя идет в скрипте начиная с 70 строчки и далее???

Можешь также посмотреть описание этой ошибки в MySQL Manual.


Что касаеться пароля ты ведь можеш в php скрипт положить и закодированный пароль, а потом в AutoIt скрипте его декодировать с помошью
Код:
_StringEncrypt()
 

andryws

Новичок
Сообщения
3
Репутация
0
XpycT

У меня на ХР последний скрипт работает нормально, а вот в Win 7 MySQL ODBC 3.51 Driver не работает(видимо, для Win 7 он устарел), настроить не могу. MySQL ODBC 5.1 Driver - работает, но скрипт выдает сообщение об ошибке из последней функции. Что это значит?

-1
Тоже были проблемы с подключением к MySql. ODBC драйвер выгруженный с оф. сайта по умолчанию версии 5.1, в скрипте тоже указал 5.1 - не заработало...
После отката(удаления ODBC 5.1 и установки версии ODBC 3.51 и указании той же версии в скрипте) всё подключилось как по маслу.
P.S. Ось windows 7 x64
 

proteus86

Новичок
Сообщения
9
Репутация
0
уже третий раз подряд пытаюсь подключиться к базе но ничего не выходит (
установил коннекторы 5.2а и 5.2w (может тут ошибка) которые взял с офф сайта
пытался подключаться и с помощью mysql UDF и с помощью приведенного кода в этом топике и всегда неудачно.
на сервере создан пользователь которому даны права на подключекния
в одбц источниках на каждый вид драйвера настроен коннект к серверу
и всеравно не подключается вот код который я в конце использую
Код:
#Region Includes
#Include <Array.au3>
#EndRegion Includes
#NoTrayIcon

Global $oMySQLError = ObjEvent("AutoIt.Error", "_MySQLError")

Dim $sDBServerIP = "192.168.65.130" ; IP адресс севера с MySQL
Dim $sDBUsername = "proteus86"        ; Имя пользователя для подключения к базе данных
Dim $sDBPassword = "3415323535"      ; Пароль
Dim $sDatabase   = "world"      ; База Данных к которой будем подключаемся

; Подключаемся к Серверу
Global $MySQLConn = ObjCreate("ADODB.Connection")
$MySQLConn.Open("DRIVER={MySQL ODBC 5.2a Driver};SERVER=" & $sDBServerIP & ";DATABASE=" & $sDatabase & ";UID=" & $sDBUsername & ";PWD=" & $sDBPassword & ";PORT=3306")

; Создаем таблицу
Dim $sTableName = "test_tbl"

Dim $sCreateTableQuery = "CREATE TABLE `" & $sTableName & "` (`col0` VARCHAR( 15 ) NULL, `col1` VARCHAR( 15 ) NULL, `col2` VARCHAR( 15 ) NULL, `col3` VARCHAR( 15 ) NULL, PRIMARY KEY (`col0`))"
$sCreateTableQuery &= "ENGINE = MYISAM"
$MySQLConn.Execute($sCReateTableQuery)

; Добавляем Записи в Таблицу
Dim $sInsertQuery = "INSERT INTO `" & $sTableName & "` (`col0`, `col1`, `col2`, `col3`) VALUES ('Col 0 Row 1', 'Col 1 Row 1', 'Col 2 Row 1', 'Col 3 Row 1');"
$MySQLConn.Execute($sInsertQuery)

; Получаем кол-во столбцов в таблице
Dim $iColCount = 0
$oColCountQuery = $MySQLConn.Execute("SHOW COLUMNS IN `" & $sTableName & "`")
With $oColCountQuery
    While Not .EOF
        $iColCount += 1
    .MoveNext
    WEnd
EndWith
MsgBox(0, "MySQL", "Кол-во Столбцов в таблице = " & $iColCount)

; Получаем кол-во строк в таблице
Dim $iRowCount = 0
$oRowCountQuery = $MySQLConn.Execute("SELECT COUNT(*) FROM `" & $sTableName & "`")
With $oRowCountQuery
    While Not .EOF
        $iRowCount = $oRowCountQuery.Fields(0).Value
    .MoveNext
    WEnd
EndWith
MsgBox(0, "MySQL", "Кол-во Строк в таблице = " & $iRowCount)

; Получаем значения из таблицы
Dim $r = 1
Dim $aDBRecords[$iRowCount + 1][$iColCount] = [[$iRowCount, ""]] ; Создаем массив для хранения данных
Dim $oGetRecords = $MySQLConn.Execute("SELECT * FROM `" & $sTableName & "`")
With $oGetRecords
    While Not .EOF
        For $c = 0 To $iColCount - 1
            $aDBRecords[$r][$c] = $oGetRecords.Fields($c).Value ; Заносим данные в массив

            MsgBox(0, "MySQL", "Столбцец : " & $c & @CRLF & "Строка : " & $r & @CRLF & "Значение : " & $aDBRecords[$r][$c])
        Next
        $r += 1
        .MoveNext
    WEnd
EndWith
_ArrayDisplay($aDBRecords)

; Удаляем Запись из таблицы
Dim $sDereteRecordQuery = "DELETE FROM `" & $sTableName & "` WHERE `col0` = 'Col 0 Row 1'"
$MySQLConn.Execute($sDereteRecordQuery)

; Удаляем только что созданую таблицу
$MySQLConn.Execute("DROP TABLE `" & $sTableName & "`")

; Отключаемся от сервера
$MySQLConn.Close


Func _MySQLError()
  $HexNumber = Hex($oMySQLError.number, 8)

  MsgBox(16, "MySQL Error", "err.description is  : " & @TAB & $oMySQLError.description & @CRLF & _
                            "err.windescription  : " & @TAB & $oMySQLError.windescription & @CRLF & _
                            "err.number is       : " & @TAB & $HexNumber & @CRLF & _
                            "err.lastdllerror is : " & @TAB & $oMySQLError.lastdllerror & @CRLF & _
                            "err.scriptline is   : " & @TAB & $oMySQLError.scriptline & @CRLF & _
                            "err.source is       : " & @TAB & $oMySQLError.source & @CRLF & _
                            "err.helpfile is     : " & @TAB & $oMySQLError.helpfile & @CRLF & _
                            "err.helpcontext is  : " & @TAB & $oMySQLError.helpcontext)

    Exit

    SetError(1)  ; to check for after this function returns
EndFunc   ;==>MyErrFunc


он выдает мне ошибку
<a href="http://clip2net.com/s/4UujRl"><img src="http://clip2net.com/clip/m182420/1365870150-clip-30kb.png" alt="1365870150-clip-30kb"/></a>
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
proteus86
Уточните версию. Вот код:
Код:
$oConn = ObjCreate("ADODB.Connection")
ConsoleWrite($oConn.Version & @LF)

Может нужно будет просто исправить здесь DRIVER=..
 

proteus86

Новичок
Сообщения
9
Репутация
0
извините но проблема решилась сама после установки
mysql-connector-odbc-5.2.4-ansi-win32
mysql-connector-odbc-5.2.4-win32
но так как у меня винда семерка и *64битная то я и устанавливал
mysql-connector-odbc-5.2.4-ansi-winx64
mysql-connector-odbc-5.2.4-winx64
видимо раз у меня сервер стоит на 32битной машине (на хрюшке) то и коннектор наверно ставить надо 32ухбитный
версия 6,1
и выложенный скрипт заработал
но всетаки вообще непонятно почему коннекторы надо было ставить именно 32ух битные
толи от того что сервер стоял на 32ух битной машине (хотя врядли) толи непонятно

ну вот после некоторых проверок работать стало и через удф которая на данном форуме выкладывалась
но блин теперь у меня делфи отказалась работать ))))))))))))))))))) вообще и смех и грех

да и еще извините если не в тему спросил но пните меня в нужное место где можно почитать про создание обьектов и какие они могут быть то есть вот про этот кусочек кода $oConn = ObjCreate("ADODB.Connection")
 

ssdd

Новичок
Сообщения
11
Репутация
0
Подскажите MySQL UDF еще работоспособно ?

Пробую им воспользоваться, к примеру создать таблицу
Скрипт отрабатывает без ошибок, и даже в логах mysql что то есть, но таблица не создается.
Подскажите в чем может быть проблема ?
В файле mysql.au3 пробовал по рекомендациям здесь на форуме выставлять разные драйвера, перебрал все от 3.5 до 5.3
{MySQL ODBC 5.3} - все также не создается таблица и значения.

SdHxbAV.png



А вот таким кодом все нормально создается,
но хотелось бы настроить работу UDF....

Код:
#Region Includes
#Include <Array.au3>
#EndRegion Includes
#NoTrayIcon

Global $oMySQLError = ObjEvent("AutoIt.Error", "_MySQLError")

Dim $sDBServerIP = "127.0.0.1" ; IP адресс севера с MySQL
Dim $sDBUsername = "root"        ; Имя пользователя для подключения к базе данных
Dim $sDBPassword = ""      ; Пароль
Dim $sDatabase   = "test"      ; База Данных к которой будем подключаемся

; Подключаемся к Серверу
Global $MySQLConn = ObjCreate("ADODB.Connection")
$MySQLConn.Open("DRIVER={MySQL ODBC 5.2 Unicode Driver};SERVER=" & $sDBServerIP & ";DATABASE=" & $sDatabase & ";UID=" & $sDBUsername & ";PWD=" & $sDBPassword & ";PORT=3306")

; Создаем таблицу
Dim $sTableName = "test_tbl222"

Dim $sCreateTableQuery = "CREATE TABLE `" & $sTableName & "` (`col0` VARCHAR( 15 ) NULL, `col1` VARCHAR( 15 ) NULL, `col2` VARCHAR( 15 ) NULL, `col3` VARCHAR( 15 ) NULL, PRIMARY KEY (`col0`))"
$sCreateTableQuery &= "ENGINE = MYISAM"
$MySQLConn.Execute($sCReateTableQuery)
 

XpycT

Скриптер
Сообщения
380
Репутация
133
ssdd [?]
В файле mysql.au3 пробовал по рекомендациям здесь на форуме выставлять разные драйвера, перебрал все от 3.5 до 5.3{MySQL ODBC 5.3} - все также не создается таблица и значения.

Попробуйте в mysql.au3 прописать версию драйвера вот так {MySQL ODBC 5.2 Unicode Driver}
 

ssdd

Новичок
Сообщения
11
Репутация
0
И это пробовал, в реестре как раз такой вариант сейчас стоит.
Но все равно таблицы и записи не создает, и ошибок не выводит.

Также пробовал подключаться и на удаленный и на локальный mysql - везде не получается. А скриптом что выше - везде нормально создаются и таблицы и значения. Даже не знаю в какую сторону смотреть....
 

XpycT

Скриптер
Сообщения
380
Репутация
133
ssdd

Начиная с версии MySQL 5.1, надо использовать ENGINE = engine_name вместо TYPE = engine_name

В UDF надо внести изменения на 199 строке.

Поменять
Код:
$str = $str & " PRIMARY KEY (" & $sPrimeKey & " )" & " ) " & "TYPE = " & $sType & ";"


на
Код:
$str = $str & " PRIMARY KEY (" & $sPrimeKey & " )" & " ) " & "ENGINE = " & $sType & ";"
 

ssdd

Новичок
Сообщения
11
Репутация
0
Спасибо огромное! Все сразу заработало!
 

kilohel

Новичок
Сообщения
19
Репутация
1
Ребят помогите новичку !

при запуске скрипта выдает вот что
система вин 10 64х


---------------------------
MySQL Error
---------------------------
err.description is : [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию

err.windescription : Ошибка.



err.number is : 80020009

err.lastdllerror is : 0

err.scriptline is : 15

err.source is : Microsoft OLE DB Provider for ODBC Drivers

err.helpfile is :

err.helpcontext is : 0
---------------------------
ОК
---------------------------
 

randal

Новичок
Сообщения
21
Репутация
4
Может кто-нибудь знает как узнать состояние соединения с БД? $MySQLConn.state почему-то всегда возвращает 1 даже если соединение было разорвано
 
Верх