Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 12.09.2018 15:33:23

Тестирование в sqlite

Всем привет!

В laravel 5.6 делая тесты подключил sqlite и выполнив миграцию на таблицу пользователей

Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->string('username',100)->unique();
    $table->string('email', 100)->unique();
    $table->string('password');

Вижу что в синтаксисе созданной таблицы

CREATE TABLE "users" ("id" integer not null primary key autoincrement, "username" varchar not null, "email" varchar not null, "password" varchar not null, 
...

1) для строковых полей размер поля не указан. в sqlite у строк нет размера ?
2) Могут ли быть какие проблемы если при разработке использовал mysql, а для тестирования взять sqlite ?
Погружаться в sqlite как-то совсем не хочется...
Я вычитал что для тестирования sqlite как раз и хорош - так как он однопользовательский ...

3) А для каких приложений(кроме тестирования) sqlite может быть удобен ? С трудом представляю что такое однопользовательские приложения
на php ... Можно несколько примеров?

Спасибо!

Не в сети

#2 12.09.2018 19:56:17

Re: Тестирование в sqlite

1) для строковых полей размер поля не указан. в sqlite у строк нет размера ?

Да, и более того, в SQLite даже нет строгих типов полей - тип поля можно вообще не указывать, в строковом поле можно хранить числа и т.д.

2) Могут ли быть какие проблемы если при разработке использовал mysql, а для тестирования взять sqlite ?

У них разный синтаксис (" вместо ` для колонок, и пр.), у MySQL больше функций и других расширений стандарта (GROUP_CONCAT, AUTO_INCREMENT, работа с кодировками) и т.д.

Если в проекте ничего из этого не используется, то проблем не будет, но редко встретишь проект, который можно просто взять и запустить на любой другой СУБД - в обычном случае под СУБД понимается именно и только MySQL, и люди используют ее нестандартные функции, даже не зная, что они нестандартные (в этом нет ничего плохого, т.к. 90% проектов с MySQL никогда не уходят).

Я вычитал что для тестирования sqlite как раз и хорош - так как он однопользовательский ...

Он не однопользовательский, SQLite может работать в многопользовательском режиме. По всей видимости, там где ты это читал имелось в виду, что он не умеет писать в базу одновременно двумя клиентами (т.е. если выполнить UPDATE в двух одновременных запросах, то первый запрос начнет выполнение UPDATE, второй заморозится и будет ждать, когда первый закончит, после чего выполнит свой UPDATE). То есть операции записи идут последовательно, даже если они друг друга не затрагивают (например, UPDATE разных таблиц).

Это влияет только на производительность. SQLite не упадет из-за того, что приходят одновременные запросы на запись, он просто будет работать медленнее MySQL. Для локальной разработки это не критично.

3) А для каких приложений(кроме тестирования) sqlite может быть удобен ?

Там, где нагрузка на БД не большая. SQLite лучше MySQL и других мощных СУБД в том, что его не нужно устанавливать и что-либо настраивать на сервере. Больше того, он может даже работать с БД в памяти, т.е. даже прав на запись на диск у него может не быть.

Для решений, где главное - простая установка (а лучше вообще отсутствие установки) - это самое то. Извлек скрипты и тут же начал работать.

SQLite используют очень много крупных проектов - Firefox, Android и т.д. Это проверенное решение.

Не в сети

Подвал раздела