Why after adding categorical data the Linear Regression fails?
One possible reason is that when you use one-hot-encoding for categorical data, you should set the intercept property in the function to be False:

model = LinearRegression(fit_intercept=False, normalize=True).fit(X_train, y_train)


This will avoid the dummy variable trap:
http://www.algosome.com/articles/dummy-variable-trap-regression.html

You could also use dummy encoding to avoid this problem:
http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelEncoder.html