myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
 
Ответить в данную темуНачать новую тему

> mysql, RusHub | Библиотека базы данных mysql

Теги
Setuper
сообщение 12.1.2010, 17:10
Сообщение #1


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Название: mysql
Версия библиотеки: 2.1.1
Хаб: RusHub
Версия БД: 5.0
Описание: Библиотека для подключения базы данных mysql
Использование: Содержимое архива mysql_2.1.1.rar распаковываем в папку libs. Подключается библиотека так: require"luasql.mysql".
Примечание: Если не работает, то попробуйте библиотеку libmysql.dll закинуть в корень (папку с rushub.exe) или же в system32 (syswow64 для x64).

Библиотека win32: Прикрепленный файл  mysql_2.1.1.rar ( 498.2 килобайт ) Кол-во скачиваний: 299

Библиотека win64: Прикрепленный файл  mysql_2.1.1_win64.rar ( 757.76 килобайт ) Кол-во скачиваний: 133


Проект для сборки на vs2008: Прикрепленный файл  mysql_2.1.1_src_vs9.zip ( 146.39 килобайт ) Кол-во скачиваний: 38


Скрипт примера работы с MySQL в LUA: Прикрепленный файл  mysql_test.lua ( 1.63 килобайт ) Кол-во скачиваний: 169


Основные функции для работы
Основные функции для работы с mysql в lua


Код
luasql._COPYRIGHT = "Copyright (C) 2003-2007 Kepler Project"
luasql._DESCRIPTION = "LuaSQL is a simple interface from Lua to a DBMS"
luasql._VERSION = "LuaSQL 2.1.1"
luasql._MYSQLVERSION = "5.0.18"


  • Подключение драйвера (библиотеки):
    Код
    require"luasql.mysql"

  • Инициализация драйвера (библиотеки):
    Код
    env = luasql.mysql()

  • Деинициализация драйвера (библиотеки):
    Код
    env:close()
    Возвращает true в случае успешного закрытия, false в случае, если закрытие уже было сделано до этого, и порождает ошибку скрипта: "LuaSQL: environment expected", если в метод был подсунут неверный объект.




Объект - соединение (conn)

  • Метод вызова соединения с базой данных:
    Код
    conn = env:connect([имя_базы], [имя_пользователя], [пароль], [хост], [порт])
    Обязательным является только первый параметр, остальные параметры в случае отсутствия берутся по умолчанию: [имя_пользователя] = "root", [пароль] = "", [хост] = "localhost", [порт] = 3306.
    В случае нехватки памяти возвращается nil и сообщение об ошибке: "LuaSQL: Error connecting: Out of memory."
    В случае неудачного коннекта к базе данных возвращается nil и сообщение об ошибке: "LuaSQL: Error connecting to database. MySQL: [reason]"

  • Метод закрытия соединения с базой данных:
    Код
    conn:close()
    Закрытие может быть успешным только в случае если все курсоры закрыты. Возвращает true в случае успешного закрытия, false в случае, если закрытие уже было сделано до этого, и порождает ошибку скрипта: "LuaSQL: connection expected", если в метод был подсунут неверный объект.

  • Метод выполнения SQL запроса к базе данных:
    Код
    conn:execute("запрос")
    В случае правильности запроса, для запросов типа SELECT возвращает курсор, для остальных запросов возвращает число столбцов или строк, успешно обработанных запросом. В случае неверного синтаксиса, или несуществующих таблиц, или несуществующих полей, или прочих ошибок возвращается два значения: первое - nil, второе - сообщение с содержанием ошибки.

  • Метод выполнения (завершения, совершения) текущей транзакции:
    Код
    conn:commit()
    Возвращает true в случае успеха, false - в случае, когда транзакция не может быть завершина или база данных не поддерживает транзакции (поддержка транзакции в mysql осуществляется с версии 4.0).

  • Метод отката на предыдущую транзакцию:
    Код
    conn:rollback()
    Возвращает true в случае успеха, false - в случае, когда операция не может быть выполнена или база данных не поддерживает транзакции (поддержка транзакции в mysql осуществляется с версии 4.0).

  • Метод включения/отключения автоматических транзакций:
    Код
    conn:setautocommit(boolean)
    Эта функция не может работать на базах, на которых не осуществляются транзакции. На базах данных, на которых нет понятия режима автоматических транзакций, этот механизм осуществляется драйвером. Метод возвращает true в случае успеха, и false - в случае невыполнимости или неосуществимости (поддержка транзакции в mysql осуществляется с версии 4.0).



Объект - курсор (cur)

  • Метод закрытия курсора:
    Код
    cur:close()
    Возвращает true в случае успешного закрытия, false в случае, если закрытие уже было сделано до этого, и порождает ошибку скрипта: "LuaSQL: cursor expected", если в метод был подсунут неверный объект.

  • Метод извлечения результатов:
    Код
    cur:fetch([table[,modestring]])
    Извлекает следующий столбец с результатами. Если метод вызывается без параметров, то результаты возвращаются непосредственно вызывающему оператору. Если в первом параметре метода указана таблица, то результаты помещаются в эту таблицу, и методом возвращается эта таблица, при этом может быть использован второй параметр. Второй параметр - это строка, которая указывает на то, как создавать результирующую таблицу:
    "n" - результирующая таблица будет содержать целочисленные индексы (это значение по умолчанию);
    "a" - результирующая таблица будет содержать словесные индексы.
    Целочисленные индексы являются номерами полей в SELECT запросе. Словесные индексы являются названиями полей в SELECT запросе. Дополнительный табличный параметр является таблицей, которую нужно использовать для сохранения следующей строки запроса. В частности, это допускает использование одной уникальной таблицы для всех выборок, и такой механизм может улучшить общее выполнение выборки в целом. Нет гарантии того, что извлечённые результаты будут преобразовываться в нужные в lua типы (в зависимости от содержания), то есть это говорит о том, что возвращаемые результаты всегда представляются в виде строковых значений будь это строка или число. Метод возвращает результирующую таблицу или nil, в случае если достигнута конечная строка. Здесь нужно отметить, что этот метод может возвращать nil, но тем не менее запрос будет выполнен правильно.
    В случае, если у данного метода не указаны параметры, то выбранные из базы значения сливаются в стек, а так как стек не резиновый, то в случае переполнения стека может возникнуть ошибка скрипта: "LuaSQL: too many columns", поэтому в случае большого количества данных рекомендуется сливать данные в таблицу, указывая её в первом аргументе данного метода.

  • Метод, возвращающий таблицу с именами столбцов для данного курсора:
    Код
    cur:getcolnames()
    Метод порождает ошибку скрипта: "LuaSQL: cursor expected", если в метод был подсунут неверный объект.
    Метод порождает ошибку скрипта: "LuaSQL: cursor is closed", если курсор был закрыт.

  • Метод, возвращающий таблицу с типами столбцов для данного курсора:
    Код
    cur:getcoltypes()
    Метод порождает ошибку скрипта: "LuaSQL: cursor expected", если в метод был подсунут неверный объект.
    Метод порождает ошибку скрипта: "LuaSQL: cursor is closed", если курсор был закрыт.

  • Метод, возвращающий число строк, полученных в результате запроса:
    Код
    cur:numrows()
    Метод порождает ошибку скрипта: "LuaSQL: cursor expected", если в метод был подсунут неверный объект.
    Метод порождает ошибку скрипта: "LuaSQL: cursor is closed", если курсор был закрыт.


Спасибо сказали:
Go to the top of the page
+Quote Post
CrazyKiller
сообщение 20.5.2011, 11:45
Сообщение #2


Продвинутый участник
****

Группа: Пользователи
Сообщений: 189
Регистрация: 20.4.2009
Пользователь №: 3 121
Спасибо сказали: 12 раз




Падает Скрипт сразу при запуске, пишет ошибку что не найдена Библиотека !

в Логе error loading module 'luasql.mysql' from file 'd:\2\libs\luasql\mysql.dll':
Не найден указанный модуль.

Пути правильные, другие библиотеки работают отлично, проверял с разными скриптами которые требуют Библиотеку MYSQL, в чём может быть проблема ?

Разобрался, заработал когда кинул в корень папки !
Думаю нужна исправить big_smile.gif
Go to the top of the page
+Quote Post
ShadoWx
сообщение 2.8.2011, 8:50
Сообщение #3


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 216
Регистрация: 23.10.2008
Из: Саратов
Пользователь №: 865
Спасибо сказали: 60 раз




ребят, хоть убейте для меня билиотеки темный лес просидел все ночь то с сокетами, то с mysql ....
хотел установить скрипт сетапера - antisearch ... в итоге

лог ошибок
Код
[Tue Aug  2 09:51:42 2011] /home/shadowx/rushub_bin/scripts/Antisearch.lua:113: module 'luasql.mysql' not found:
    no field package.preload['luasql.mysql']
    no file '/home/shadowx/rushub_bin/libs/luasql/mysql.lua'
    no file '/home/shadowx/rushub_bin/libs/luasql/mysql/init.lua'
    no file '/home/shadowx/rushub_bin/luasql/mysql.lua'
    no file '/home/shadowx/rushub_bin/luasql/mysql/init.lua'
    no file '/home/shadowx/rushub_bin/scripts/luasql/mysql.lua'
    no file '/home/shadowx/rushub_bin/scripts/luasql/mysql/init.lua'
    no file '/home/shadowx/rushub_bin/scripts/libs/luasql/mysql.lua'
    no file '/home/shadowx/rushub_bin/scripts/libs/luasql/mysql/init.lua'
    no file './luasql/mysql.lua'
    no file '/usr/local/share/lua/5.1/luasql/mysql.lua'
    no file '/usr/local/share/lua/5.1/luasql/mysql/init.lua'
    no file '/usr/local/lib/lua/5.1/luasql/mysql.lua'
    no file '/usr/local/lib/lua/5.1/luasql/mysql/init.lua'
    no file '/usr/share/lua/5.1/luasql/mysql.lua'
    no file '/usr/share/lua/5.1/luasql/mysql/init.lua'
    no file '/home/shadowx/rushub_bin/libs/luasql/mysql.so'
    no file '/home/shadowx/rushub_bin/luasql/mysql.so'
    no file '/home/shadowx/rushub_bin/scripts/luasql/mysql.so'
    no file '/home/shadowx/rushub_bin/scripts/libs/luasql/mysql.so'
    no file './luasql/mysql.so'
    no file '/usr/local/lib/lua/5.1/luasql/mysql.so'
    no file '/usr/lib/lua/5.1/luasql/mysql.so'
    no file '/usr/local/lib/lua/5.1/loadall.so'
    no file '/home/shadowx/rushub_bin/libs/luasql.so'
    no file '/home/shadowx/rushub_bin/luasql.so'
    no file '/home/shadowx/rushub_bin/scripts/luasql.so'
    no file '/home/shadowx/rushub_bin/scripts/libs/luasql.so'
    no file './luasql.so'
    no file '/usr/local/lib/lua/5.1/luasql.so'
    no file '/usr/lib/lua/5.1/luasql.so'
    no file '/usr/local/lib/lua/5.1/loadall.so'


я понимаю что такая ошибка возникает из за не установленной либы ...
пожалуйста поясните как ее собирать ...от А до Я ..включая изменения в мейк файлах .....
Go to the top of the page
+Quote Post
Saymon21
сообщение 2.8.2011, 14:52
Сообщение #4


Site Reliability Engineer
*********

Группа: Модераторы
Сообщений: 1 772
Регистрация: 27.6.2009
Из: Чувашия, г. Чебоксары
Пользователь №: 3 719
Спасибо сказали: 479 раз




Ведь рассказал всё вчера и кинул изменённое :(
nano /lua-sql-2.2.0~rc1/debian/mysql.Makefile.Debian.conf
тык
Код
### mandatory fields
PKG_NAME=sql.mysql

### things relative to the C library part
CLIB_CFLAGS=$(shell mysql_config --cflags)
CLIB_LDFLAGS=$(shell mysql_config --libs) -llua5.1
CLIB_OBJS=src/luasql.lo src/ls_mysql.lo
VERSION_INFO=2:0:0

### things relative to the lua library part
LUA_HEADER=
LUA_SOURCES=
LUA_MODNAME=luasql.mysql
#LUA_TEST=tests/test.lua mysql database user password

### this part is relative to pkg-config
PKG_VERSION=$(shell dpkg-parsechangelog|grep ^Ver|cut -d ' ' -f 2|cut -d '-' -f 1)
PKG_LIBS_PRIVATE=
PKG_URL=
PKG_REQUIRES=
PKG_CONFLICTS=

### this part is relative to debian libs naming policy
DEB_EXTRA_DASH=-

Код
dpkg-buildpackage -rfakeroot
Go to the top of the page
+Quote Post
arktik
сообщение 19.12.2011, 10:33
Сообщение #5


Участник
**

Группа: Пользователи
Сообщений: 31
Регистрация: 15.6.2011
Из: г. Владивосток
Пользователь №: 9 350
Спасибо сказали: 0 раз




После обновления хаба на версию 2.3.7, а луа плагина 2.6, перестал работать модуль мускула. Вот что пишет в lua_errors.log:
Раскрывающийся текст
Код
[Mon Dec 19 17:36:15 2011] error loading module 'luasql.mysql' from file '/usr/lib/lua/5.1/luasql/mysql.so':
    /usr/lib/lua/5.1/luasql/mysql.so: undefined symbol: lua_getfield

В чем может быть проблема?
Go to the top of the page
+Quote Post
Setuper
сообщение 19.12.2011, 11:44
Сообщение #6


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




На лицо проблемы с lua. Нужно смотреть как mysql либа линкуется с lua, и как линкуется rushub при сборке.
Проверить к одной и той же версии lua они линкуются.

Попробуй пересобрать mysql либу
Go to the top of the page
+Quote Post
arktik
сообщение 20.12.2011, 8:18
Сообщение #7


Участник
**

Группа: Пользователи
Сообщений: 31
Регистрация: 15.6.2011
Из: г. Владивосток
Пользователь №: 9 350
Спасибо сказали: 0 раз




Спасибо. Проблема решена.
Нужно было скомпилировать модуль mysql с особыми параметрами.

Вот config файл, который я изменил:
Код
Код
# $Id: config,v 1.10 2008/05/30 17:21:18 tomas Exp $

# Driver (leave uncommented ONLY the line with the name of the driver)
T= mysql
#T= oci8
#T= odbc
#T= postgres
#T= sqlite
#T=sqlite3
#T=firebird

# Installation directories

# Default prefix
PREFIX = /usr

# System's libraries directory (where binary libraries are installed)
LUA_LIBDIR= $(PREFIX)/lib/lua/5.1

# System's lua directory (where Lua libraries are installed)
LUA_DIR= $(PREFIX)/share/lua/5.1

# Lua includes directory
LUA_INC= $(PREFIX)/include/lua5.1
# LUA_INC= mysql/

# Lua version number (first and second digits of target version)
LUA_VERSION_NUM= 501

# OS dependent
# Здесь надо добавить параметр -llua
LIB_OPTION= -shared -llua
#LIB_OPTION= -bundle -undefined dynamic_lookup #for MacOS X

LIBNAME= $T.so
COMPAT_DIR= ../compat/src

# Compilation parameters
# Driver specific
######## MySQL
DRIVER_LIBS= -L/usr/lib/mysql/ -lmysqlclient -lz
DRIVER_INCS= -I/usr/include/mysql
######## Oracle OCI8
#DRIVER_LIBS= -L/home/oracle/OraHome1/lib -lz -lclntsh
#DRIVER_INCS= -I/home/oracle/OraHome1/rdbms/demo -I/home/oracle/OraHome1/rdbms/public
######## PostgreSQL
#DRIVER_LIBS= -L/usr/local/pgsql/lib -lpq
#DRIVER_INCS= -I/usr/local/pgsql/include/
######## SQLite
#DRIVER_LIBS= -lsqlite
#DRIVER_INCS=
######## SQLite3
#DRIVER_LIBS= -L/opt/local/lib -lsqlite3
#DRIVER_INCS= -I/opt/local/include
######## ODBC
#DRIVER_LIBS= -L/usr/local/lib -lodbc
#DRIVER_INCS= -DUNIXODBC -I/usr/local/include
######## Firebird
#DRIVER_LIBS= -L/usr/local/firebird -lfbclient
#DRIVER_INCS=

WARN= -Wall -Wmissing-prototypes -Wmissing-declarations -ansi -pedantic
INCS= -I$(LUA_INC)
# И здесь добавить -fPIC
CFLAGS= -fPIC -O2 $(WARN) -I$(COMPAT_DIR) $(DRIVER_INCS) $(INCS) -DLUASQL_VERSION_NUMBER='"$V"' $(DEFS)
CC= gcc

# $Id: config,v 1.10 2008/05/30 17:21:18 tomas Exp $
Go to the top of the page
+Quote Post
mariner
сообщение 20.12.2011, 12:24
Сообщение #8


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 875
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




эм, ну и зачем тут это? То же самое, что и в 4ом сообщении темы.
Go to the top of the page
+Quote Post
shadow3c
сообщение 18.8.2014, 4:05
Сообщение #9


Начинающий
*

Группа: Пользователи
Сообщений: 16
Регистрация: 18.7.2012
Пользователь №: 10 726
Спасибо сказали: 0 раз




Помогите пожалуйста у меня похожая проблема
http://mydc.ru/topic5661.html
Go to the top of the page
+Quote Post

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No new Topic has attachmentsMysql
win32 - API 2 | Самая распространённая база данных
78 Setuper 107 902 19.8.2017, 8:59 Посл. сообщение: Kinsler
No New Posts lua mysql
4 shadow3c 8 875 20.8.2014, 20:33 Посл. сообщение: shadow3c
No New Posts Mysql
Unix | База данных
11 Jaska 21 325 21.9.2013, 18:17 Посл. сообщение: KCAHDEP
No new Эффективность mysql
текстовый файл или mysql?
23 Iskandark 21 103 29.12.2011, 9:47 Посл. сообщение: mariner
No New Posts Скрипт антимат и антиреклама с базой в Mysql
1 Vizunchik 6 845 7.12.2011, 20:17 Посл. сообщение: Ksan
No New Posts RusHub and MySQL?! есть ли и как ...
вопросы про mysql, md5 hash и т.д.
4 DRUG_ADDICT 9 608 3.4.2011, 7:03 Посл. сообщение: alex82
No New Posts Topic has attachmentsCustomLocations + MySQL
Определяем провайдера по IP-адресу
0 alex82 6 834 7.3.2011, 18:39 Посл. сообщение: alex82
No New Posts Релизы/Заказы с MySQL
API 2 | MySQL
0 Kingston 5 190 6.2.2011, 10:08 Посл. сообщение: Kingston
No New Posts Topic has attachmentsУстановка и настройка Ubuntu 10.04 под PtokaX 4.1.2 с MySQL. Финал.
Инструкция для новичков в Линуксе
11 TiGRpp 28 389 2.9.2010, 5:09 Посл. сообщение: TiGRpp
No new Topic has attachmentsПоиск по TTH на MySQL
18 Lesh™ 20 434 15.8.2010, 12:40 Посл. сообщение: Lesh™
No New Posts От: Поиск по TTH на MySQL
От темы с ID: 3549
1 Lesh™ 6 330 14.7.2010, 0:30 Посл. сообщение: Lesh™
Closed Скрипт для внесени в данных в MySQL прям из чата командой.
Нужно маленький скриптик который будет экспортировать определенный тек
1 DEN 007 6 023 4.7.2010, 9:45 Посл. сообщение: Setuper
No New Posts От: Заявки на перевод скриптов под MySQL
От темы с ID: 1824
0 alev 5 114 25.4.2010, 12:05 Посл. сообщение: alev
No New Posts От: mysql
От темы с ID: 2952
3 derSpinner 6 176 13.4.2010, 11:41 Посл. сообщение: Setuper
No New Posts ВАЖНО: Topic has attachmentsЗаявки на перевод скриптов под MySQL
5 Wariner 13 073 4.4.2010, 15:18 Посл. сообщение: Accelerator

 



RSS Сейчас: 19.3.2024, 14:10