O SchemaShell disponibiliza uma funcionalidade para criar objetos de esquema, geração de sql de um esquema, bem como criação de instantâneos de banco de dados (snapshots) e restauração de banco de dados para dados a partir de tais instantâneos.
Gerar um arquivo de schema permite a você converter facilmente uma base de dados para um formato neutro, independente do gerenciador de banco de dados. Você pode gerar um arquivo de schema de sua base de dados com:
$ cake schema generate
Isto irá gerar um arquivo schema.php em seu diretório
app/config/sql
.
O shell schema vai processar apenas as tabelas para as quais já haja
model definido. Para forçar o shell schema a processar todas as tabelas,
você deve adicionar a opção -f
à linha de comando.
Para reconstruir o esquema de base de dados a partir de um arquivo schema.php previamente existente, execute:
$ cake schema create
Isto irá apagar e criar as tabelas definidas a partir do conteúdo do arquivo schema.php.
Arquivos de schema também podem ser usados para gerar conteúdos de
arquivos sql. Para gerar um arquivo sql contendo declarações
CREATE TABLE
, execute:
$ cake schema dump -write filename.sql
Em que filename.sql é o nome de arquivo desejado que terá o conteúdo sql. Se você omitir este nome de arquivo, o conteúdo sql gerado será exibido na tela do console e não será criado nenhum arquivo.
Migrações (ou migrations) permitem que você versione o esquema de sua base de dados, então, conforme você prossegue no desenvolvimento de sua aplicação, você tem a possibilidade de distribuir as modificações em sua base de dados de uma forma neutra e independente de um gerenciador de banco de dados específico. Migrações podem ser obtidas tanto colocando os arquivos de schema em um sistema de controle de versão ou ainda através de instantâneos. Versionar um arquivo de schema gerado com o schema shell é bem fácil. Se você já tiver um arquivo de schema gerado, ao executar novamente
$ cake schema generate
Serão mostradas a você as seguintes opções:
Generating Schema...
Schema file exists.
[O]verwrite
[S]napshot
[Q]uit
Would you like to do? (o/s/q)
Selecionar [s] (snapshot, ou instantâneo) irá gerar um arquivo schema.php incrementado. Então, se você já tiver um schema.php, ele irá gerar um arquivo schema_2.php e assim por diante. Você pode então restaurar qualquer um desses arquivos de schema a qualquer momento executando:
$ cake schema run update -s 2
Neste caso, 2 é o número do instantâneo para o qual você quer recuperar.
O schema shell vai lhe solicitar uma confirmação antes de executar os
comandos ALTER
que representem a diferença entre a configuração
atual de sua base de dados e as definições no arquivo de schema em
questão.
Você também pode fazer uma execução «a seco» adicionando a opção
-dry
ao comando.