Monday 29 April 2024

Understanding Case Sensitivity in Liquibase Changelogs

When working with Liquibase to manage database schema changes, developers often encounter issues related to case sensitivity, especially when deploying changes across different environments. In this blog post, we'll explore the concept of case sensitivity in Liquibase changelogs and how it can impact database deployments.

What is Liquibase?

Liquibase is an open-source database schema migration tool that allows developers to manage and version database changes in a structured and repeatable manner. It uses changelog files to define database changes applied to the target database.

Understanding Case Sensitivity

One common issue that developers face when using Liquibase is case sensitivity. Unlike Windows, Linux file systems are typically case-sensitive, meaning file and directory names are treated as distinct based on case. This can lead to inconsistencies when working with Liquibase changelogs, especially when referencing database objects such as tables and columns.

Example Changelog

Let's consider the following example Liquibase changelog snippet:

<changeSet id="add_full_name_on_userprofile" author="shahzeb">

<addColumn tableName="userprofile"> <column name="full_name" type="VARCHAR(50)" defaultValue="regex"> <constraints nullable="false"/> </column> </addColumn> <comment>add full_name column</comment> </changeSet>

In this changelog, we're adding a new column named full_name to the userprofile table. Note that the table and column names are specified in lowercase, which may work fine on Windows but can lead to issues on Linux due to case sensitivity.






Wednesday 24 April 2024

Docker build crashing with error : failed to receive status: rpc error: code = Unavailable desc = error reading from server: EOF

 On Windows 10, Docker desktop, I received the following error when building an image. The build will take more than 30 minutes when reaches the following command.

RUN poetry config virtualenvs.create false && poetry update && poetry install --no-interaction --no-ansi

and throw the following error. 

failed to receive status: rpc error: code = Unavailable desc = error reading from server: EOF

I had to increase the allocated resources to the docker desktop to resolve the issue.