I set up a private chain using geth v1.8.27, then deployed an erc20 contract in solidity 0.5.0 complied using the 0.5.7+commit.6da8b019 version of compiler. After the transaction was mined, I tried to get the name, symbol, decimals and totalSupply of the token on the geth console, but it failed to return the correct results and had some errors shown as follows.

> mytoken.name()
Error: new BigNumber() not a base 16 number:
at L (bignumber.js:3:2876)
at bignumber.js:3:8435
at a (bignumber.js:3:389)
at web3.js:1110:23
at web3.js:1634:20
at web3.js:826:16
at map (<native code>)
at web3.js:825:12
at web3.js:4080:18
> mytoken.symbol()
Error: new BigNumber() not a base 16 number:
at L (bignumber.js:3:2876)
at bignumber.js:3:8435
at a (bignumber.js:3:389)
at web3.js:1110:23
at web3.js:1634:20
at web3.js:826:16
at map (<native code>)
at web3.js:825:12
at web3.js:4080:18
> mytoken.decimals()
0
> mytoken.totalSupply()
0

I am sure that the contract was deployed successfully as I can get the transaction and transaction receipt as shown below.

After that, I rewrote the erc20 contract in solidity 0.4.0 (almost the same except some differences in argument data types, event invocation prefix "emit" and the constructor), compiled it using the 0.4.20+commit.3155dd80 version of compiler and tried to deploy it on the same private chain. It succeeded. The two contracts are pasted below.

Have you enabled the new constantinople opcodes in your private chain? Since a recent solc 0.5.xx it uses the new shift opcodes and contracts will fail with invalid opcodes in blockchains without them.
– IsmaelMay 5 at 19:59