Ответы пользователя по тегу MySQL
  • Есть ли в свободном доступе SPA приложение?

    valerium
    @valerium
    Изобретая велосипед
    Вот эту ссылку я нашёл в Википедии
    tiddlywiki.com
    Ответ написан
    Комментировать
  • Как синхронизировать бд в андроид приложении с бд сервере?

    valerium
    @valerium
    Изобретая велосипед
    Дык REST API же. Мобильное приложение — это просто обёртка к этому API. Оно авторизуется, запрашивает данные, показывает их Вам. Если Вы что-то в приложении меняете, оно формирует соответствующий запрос на изменение, отправляет его серверу. Куда и как пишет сервер, мобильного приложения совершенно не касается, это не его забота. Точно так же, сервера не касается, какую информацию и как кэширует у себя мобильное приложение. Можете просто кэшировать JSON с данными, можете полноценную базу данных развернуть и там полную копию данных хранить. Суть в том, что не надо обмениваться по сети SQL дампами, только строго регламентированное взаимодействие через API. Это, в конце концов, гораздо безопаснее.
    Ответ написан
    1 комментарий
  • Как получить последние х строк из mysql?

    valerium
    @valerium
    Изобретая велосипед
    SELECT * FROM `имя_таблицы` ORDER BY `Дата` DESC LIMIT 10;


    И если нужно именно последние x в хронологическом порядке, то сортировать по полю с датой — это единственное правильное решение, потому что никто не гарантирует, что id привязан к хронологии. Например, данные о погоде могли быть добавлены «задним числом».

    UPD. Действительно, допустил ошибку в ответе, поправил.
    Ответ написан
    Комментировать
  • Какой хороший мануал для настройки VDS ubuntu под веб-хостинг?

    valerium
    @valerium
    Изобретая велосипед
    sudo apt-get install nginx mysql-server php5-fpm php5-mysql
    Ответ написан
    Комментировать
  • Как настроить импорт прайсов из excel в БД?

    valerium
    @valerium
    Изобретая велосипед
    По всей видимости, файлы приходят из разных источников?

    В таком случае разумно написать класс Товар, который не делает почти ничего, только описывает основные поля и имеет методы записать_в_базу() и, возможно, проверить_наличие_в_базе().

    Далее на каждый источник файлов пишется свой парсер, который разбирает файл на массив таких объектов и у каждого по очереди вызывает сначала метод проверить_наличие_в_базе(), и при отрицательном ответе вызывает записать_в_базу().

    Если нужно не только заносить новые объекты, но и обновлять старые, то логика второго пункта чуть усложняется, но не критично.
    Ответ написан
    4 комментария
  • Существует ли MySQL клиент для чайников?

    valerium
    @valerium
    Изобретая велосипед
    Я бы предложил LibreOffice Base или Microsoft Access и уже через них либо в MySQL, либо в файлик собственного формата.

    С точки зрения мамы ключевым преимуществом будет элементарный экспорт данных из базы в формы, например, для печати.
    Ответ написан
    Комментировать
  • Как структурировать таблицу mysql?

    valerium
    @valerium
    Изобретая велосипед
    Специально для таких случаев придумана связь один-ко-многим. Каждое поле, которое может принимать одни значение из фиксированного набора, должно быть указателем на id в другой таблице, которая перечисляет все возможные значения этого поля. Гуглите по словам «нормализация» и «внешний ключ».
    Ответ написан
    Комментировать
  • Есть ли готовое решение для копирование новых записей в БД с production в local server?

    valerium
    @valerium
    Изобретая велосипед
    Репликация master-slave. Хотя, если под новыми записями Вы имеете ввиду созданные за последние N часов, то вряд ли есть готовые решения, но легко написать однострочник.
    Ответ написан
    6 комментариев
  • Как синхронизировать базы данных MySQL через Dropbox?

    valerium
    @valerium
    Изобретая велосипед
    Синхронизация базы данных через DropBox имеет несколько весомых минусов..

    Во-первых, Вы сможете запускать только один экземпляр базы данных, то есть запустили на ноуте, поработали, остановили, синхронизировали на DropBox, синхронизировали на компьютер, запустили на компьютере. И в обратном порядке. Хотя для Вас, возможно, это и не проблема.

    Во-вторых, на обоих компьютерах у Вас должны быть одинаковые версии MySQL, хотя бы одной минорной версии, поскольку бинарные файлы между разными версиями могут быть несовместимы. Но и это, похоже, для Вас не самая большая проблема.

    И в-третьих, насколько знаю, DropBox не умеет заливать файлы «по частям», то есть он при вставке одной строки в 2-гигабайтную базу он будет заливать все 2 гига.

    Ну и вопрос, в каком конкретном файле лежит база данных, зависит от используемого движка и некоторых параметров в my.cnf. InnoDB или MyISAM?
    Ответ написан
    7 комментариев
  • Установка MySQL-1.2.5 на Pycharm 4.5.3, в чем проблема?

    valerium
    @valerium
    Изобретая велосипед
    В первом случае, похоже, не установлен pip для второго пайтона. Попробуйте
    sudo apt-get install python-pip

    Во втором случае нужно:
    0) убедиться, что на компе стоит сервер MySQL.
    1) вставить «костыль» (создать символьную ссылку с заглавными буквами):
    sudo ln -s /usr/lib/python3.4/configparser.py /usr/lib/python3.4/ConfigParser.py

    2) доставить dev пакетов:
    sudo apt-get install libmysqlclient-dev python3-dev

    3) поставить через pip в консольке:
    sudo pip3 install MySQL-python

    После успешной установки пункты 1 и 2 можно откатить.

    А вообще, читайте внимательно сообщения об ошибках и логи, там всё написано.
    Ответ написан
    5 комментариев
  • Как вывести данные из mysql в Google Charts?

    valerium
    @valerium
    Изобретая велосипед
    Уберите вот эту строку
    echo 'Подключение прошло успешно';
    Ответ написан
    3 комментария
  • Как проводить математические операции с данными в MySql?

    valerium
    @valerium
    Изобретая велосипед
    Вообще операции с деньгами, пусть и условными, делаются через две таблицы. Одна под информацию о балансе (или просто ещё одно поле в таблице с учетной записью). Вторая под список операций (от кого, кому, когда, сколько). Каждый перевод оформляется в виде транзакции: получить баланс, записать перевод, пересчитать и записать новый баланс.

    Плюс если предполагается, что суммы могут принимать добрые значения, используйте тип decimal, а не float.
    Ответ написан
    3 комментария
  • Как сделать remote connection к MySQL?

    valerium
    @valerium
    Изобретая велосипед
    Проверьте, есть ли пинг до сервера и виден ли снаружи открытый порт (nmap или telnet).

    Если да, то убедитесь, что IP адрес указан правильно или замените его на 0.0.0.0. И порт проверьте, по умолчанию 3306, но может быть переписан.
    Ответ написан
  • Как реализовать папки и подпапки на php?

    valerium
    @valerium
    Изобретая велосипед
    Когда я для своего безумного проекта искал способ организовать иерархическую структуру внутри реляционной базы данных, нашёл вот такую классную статью.
    Ответ написан
    Комментировать
  • Почему у нуба возникает ошибка «Call to a member function fetch_array() on a non-object» в MySQL?

    valerium
    @valerium
    Изобретая велосипед
    Вы пытаетесь вызвать метод у сущности, которая не является объектом.

    Если коротко, то в строке с ошибкой нужно $mysql-> заменить на $result-> и убрать $result из скобок.

    Если подробнее, то строка
    $result = $mysqli->query("SELECT id FROM users WHERE login='$login'");

    в переменной $result создала объект результирующего набора. У этого объекта есть метод fetch_array(), который при каждом вызове возвращает одну строку из набора. Вы же попытались вызвать этот метод у переменной, которая не объявляется в приведённом участке кода, но явно содержит что-то, не являющееся результирующим набором.
    Ответ написан
  • Какой инструмент использовать для личной БД с блогом?

    valerium
    @valerium
    Изобретая велосипед
    Как велолюбитель могу предложить взять какой-нибудь из популярных вэб-фреймворков и сообразить что-нибудь самому. Сначала накатать блог, а потом к нему уже прикручивать нужные хотелки.

    Минусы очевидны — потребуется время и умение прогать.

    Плюсы не менее очевидны — почти абсолютная свобода действий. Можно соорудить именно такую базу данных с такими таблицами, какие нужны Вам, повесить на эти таблицы свои триггеры и обработчики и т. п. Например, считать финансы. С помощью CMS это довольно проблематично организовать. Ну и, безусловно, это будет неплохим способом изучить язык, фреймворк, базы данных.
    Ответ написан
  • Можно ли заменить связующую таблицу mysql на поле со значением в виде json массива?

    valerium
    @valerium
    Изобретая велосипед
    Вы потеряете самое интересное — возможность пользоваться вторичными ключами, то есть делать быстрые и удобные выборки.

    Точнее, всегда можно воспользоваться встроенными функциями MySQL, извлечь из JSONа индексы и сделать ещё один запрос, но Вы представьте, сколько это лишней работы как для программиста, так и для сервера.

    Другое дело, если Вам для каких-то целей список этих индексов регулярно нужен в виде JSONа. Тогда можно либо триггером регулярно перезаписывать это значение (но хранить его как дополнение к таблице user2org, а не вместо неё), либо написать хитрый SQL запрос, который будет этот самый JSON на лету формировать.
    Ответ написан
    7 комментариев
  • Как загрузить все файлы из папки в Mysql?

    valerium
    @valerium
    Изобретая велосипед
    Или в цикле :-)
    for i in `ls -1`; do mysql -u admin -pw12345678 databasename < $i; done

    Хотя вариант от Rsa97 кошернее, так как вводить пароль напрямую в консоль - не секурно, а вводить отдельно на каждый файл - геморрно. Главное, чтобы порядок ввода данных из файлов был безразличен, иначе однострочником не обойтись.

    В Вашем же варианте две ошибки. Во-первых, Вы пытаетесь передать программе mysql на стандартный ввод (через пайп | ) список файлов, хотя она туда принимает только непосредственно SQL код. То есть, Вам нужна команда cat, а не ls. Во-вторых, с помощью < Вы указываете оболочке на необходимость передать на тот же стандартный ввод содержимое некоторого файла, но сам файл не указываете, вот он и удивляется.
    Ответ написан
    Комментировать
  • Как разумно составить следующий запрос mysql?

    valerium
    @valerium
    Изобретая велосипед
    SELECT title, count(*) score FROM table
    WHERE
        date >= '2015-01-01' AND
        date <= '2015-01-07'
    GROUP BY title;

    Если под первой неделей подразумеваются не первые семь дней, а календарная неделя, то будет чуть сложнее, нужно вычислить правильные дни.
    Ответ написан
    Комментировать
  • Как спроектировать базу данных сайта знакомств на MySQL?

    valerium
    @valerium
    Изобретая велосипед
    1. Если Вы точно уверены, что количество стран не выйдет за десятку, то можно и ENUM, но всё же лучше нормализовать и сделать отдельную таблицу с индексом. Ведь для выборки текстового представления ENUM СУБД полезет в файл и будет там искать его простым перебором. На десятке стран это не критично, но при росте вызовет лаги. Кстати, это один из тех немногих случаев, когда в primary key можно спокойно выбирать тип данных TINYINT :-)
    2. Большинство систем хранения MySQL умеют только B+-tree индексы, так что заморачиваться с выбором между B- и B+-деревьями не стоит, надо просто решить, нужен ли индекс вообще. Для этого нужно знать архитектуру всего приложения. В общих чертах можно описать так, что если по полю будет производиться поиск, то индекс нужен. Не думаю, что кого-то на сайте знакомств будут искать по фамилии (разве что по имени в целях "совместимости"). По дате, скорее всего, тоже будет просто сортировка
    3. Прямо совсем и всегда избегать NULL не стоит. Многие советуют обходиться без него, поскольку для его обработки MySQL использует лишний байт памяти и несколько лишних тактов процессорного времени. Определиться довольно просто: если предполагается, что поле может быть пустым, то NULL лучше оставить и не городить костыли. Если же поле обязано быть заполненным, то лучше написать NOT NULL и задать значение по умолчанию. То есть, например, поле "имя" можно смело писать NOT NULL, а вот для поля "любимая книга" можно и оставить NULL, далеко не все посетители сайтов знакомств дружат с литературой.
    4. Вопрос странный. Нормализация - это приём построения баз данных, позволяющий избавиться от дублирования данных, избежать ошибок. Это промышленный стандарт, можно сказать. Какую подсистему хранения выбрать - зависит уже от свойств хранимых данных. Вообще удобнее InnoDB, так как она поддерживает внешние ключи. Но можно использовать и Memory для чего-то чувствительного к скорости, но нечувствительного к потере.
    Ответ написан
    Комментировать